mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d280bf0d4d | ||
|
|
03c91dfac1 | ||
|
|
60e12063cd | ||
|
|
e5b57af315 | ||
|
|
a396a7f0af | ||
|
|
d084789c56 | ||
|
|
dafac32e70 | ||
|
|
6ca39f3aa5 | ||
|
|
234a9ef1b4 | ||
|
|
24a1327805 | ||
|
|
33d77d57f4 | ||
|
|
0571b657aa | ||
|
|
e4958baddc | ||
|
|
c985747297 | ||
|
|
f5ffdfc258 | ||
|
|
a3a61967a8 | ||
|
|
1bdeda4a21 | ||
|
|
49ba83da6d | ||
|
|
19d1497c4b | ||
|
|
0c4f22f847 | ||
|
|
1803ea3c38 | ||
|
|
93fda02e43 | ||
|
|
77958f9afe | ||
|
|
82e402f31a | ||
|
|
35aeb98d45 | ||
|
|
d99cba3b6e | ||
|
|
4c6fd96bcc | ||
|
|
ff088c6203 | ||
|
|
a1cb6928db | ||
|
|
40a5b60dcb | ||
|
|
2711736004 | ||
|
|
18c165e893 | ||
|
|
0aaa04295b | ||
|
|
7639e9a38d | ||
|
|
d783bd771f | ||
|
|
9dd9d14107 | ||
|
|
e942266dd7 | ||
|
|
c8f78904d6 | ||
|
|
a982fd1e2b | ||
|
|
7e8b2f6be5 | ||
|
|
921c7bbc3a | ||
|
|
eaff6b0c68 | ||
|
|
e1ab424481 | ||
|
|
e59c9720fc | ||
|
|
b25f0007f0 | ||
|
|
65c5cdd52f | ||
|
|
a2873ea553 | ||
|
|
3a593ff255 | ||
|
|
92e1193ffb | ||
|
|
016968dcb9 | ||
|
|
fec653186a | ||
|
|
66320b5055 | ||
|
|
f0f537ff8f | ||
|
|
e5c9468d09 | ||
|
|
8aed173127 | ||
|
|
61ecca7257 | ||
|
|
7eba657b2f | ||
|
|
784de340d1 | ||
|
|
9191628f29 | ||
|
|
88410b1efd | ||
|
|
afea032361 | ||
|
|
3decb4056c | ||
|
|
8e9b08feca | ||
|
|
694995ea5d | ||
|
|
22de7252d0 | ||
|
|
2acf8e5125 | ||
|
|
e1f61e645d | ||
|
|
687d827ceb | ||
|
|
2885e38113 | ||
|
|
9f3ca58b55 | ||
|
|
ffe3228848 | ||
|
|
834231eb8f | ||
|
|
68f5aabd3f | ||
|
|
7e7ea92833 | ||
|
|
ebf22ceb19 | ||
|
|
6e78ae762a | ||
|
|
9535c5647f | ||
|
|
6f8bb793e1 | ||
|
|
2476050f29 | ||
|
|
1cce106977 | ||
|
|
98b55287f1 |
31
Gemfile
31
Gemfile
@@ -3,7 +3,7 @@ ruby "2.3.7"
|
||||
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
|
||||
|
||||
gem 'i18n', '~> 0.6.11'
|
||||
gem 'i18n-js', '~> 3.5.1'
|
||||
gem 'i18n-js', '~> 3.6.0'
|
||||
gem 'rails', '~> 3.2.22'
|
||||
gem 'rails-i18n', '~> 3.0.0'
|
||||
gem 'rails_safe_tasks', '~> 1.0'
|
||||
@@ -19,9 +19,8 @@ gem 'activerecord-postgresql-adapter'
|
||||
gem 'pg', '~> 0.21.0'
|
||||
|
||||
# OFN-maintained and patched version of Spree v2.0.4. See
|
||||
# https://github.com/openfoodfoundation/openfoodnetwork/wiki/Spree-2.0-upgrade
|
||||
# https://github.com/openfoodfoundation/openfoodnetwork/wiki/Tech-Doc:-OFN's-Spree-fork%F0%9F%8D%B4
|
||||
# for details.
|
||||
gem 'spree_backend', github: 'openfoodfoundation/spree', branch: '2-0-4-stable'
|
||||
gem 'spree_core', github: 'openfoodfoundation/spree', branch: '2-0-4-stable'
|
||||
|
||||
gem 'spree_i18n', github: 'spree/spree_i18n', branch: '1-3-stable'
|
||||
@@ -39,7 +38,7 @@ gem 'activemerchant', '~> 1.78'
|
||||
gem 'devise', '~> 2.2.5'
|
||||
gem 'devise-encryptable', '0.2.0'
|
||||
gem 'jwt', '~> 2.2'
|
||||
gem 'oauth2', '~> 1.4.3' # Used for Stripe Connect
|
||||
gem 'oauth2', '~> 1.4.4' # Used for Stripe Connect
|
||||
|
||||
gem 'daemons'
|
||||
gem 'delayed_job_active_record'
|
||||
@@ -62,7 +61,7 @@ gem 'haml'
|
||||
gem 'rabl'
|
||||
gem 'redcarpet'
|
||||
gem 'sass', "~> 3.3"
|
||||
gem 'sass-rails', '~> 3.2.3', groups: [:default, :assets]
|
||||
gem 'sass-rails', '~> 3.2.3'
|
||||
gem 'truncate_html'
|
||||
gem 'unicorn'
|
||||
|
||||
@@ -99,27 +98,25 @@ gem 'whenever', require: false
|
||||
|
||||
gem 'test-unit', '~> 3.3'
|
||||
|
||||
# Gems used only for assets and not required
|
||||
# in production environments by default.
|
||||
group :assets do
|
||||
gem 'coffee-rails', '~> 3.2.1'
|
||||
gem 'compass-rails'
|
||||
gem 'coffee-rails', '~> 3.2.1'
|
||||
gem 'compass-rails'
|
||||
|
||||
gem 'mini_racer', '0.2.9'
|
||||
gem 'mini_racer', '0.2.9'
|
||||
|
||||
gem 'uglifier', '>= 1.0.3'
|
||||
gem 'uglifier', '>= 1.0.3'
|
||||
|
||||
gem 'angular-rails-templates', '~> 0.3.0'
|
||||
gem 'foundation-icons-sass-rails'
|
||||
gem 'momentjs-rails'
|
||||
gem 'turbo-sprockets-rails3'
|
||||
end
|
||||
gem 'angular-rails-templates', '~> 0.3.0'
|
||||
gem 'foundation-icons-sass-rails'
|
||||
gem 'momentjs-rails'
|
||||
gem 'turbo-sprockets-rails3'
|
||||
|
||||
gem "foundation-rails"
|
||||
gem 'foundation_rails_helper', github: 'willrjmarshall/foundation_rails_helper', branch: "rails3"
|
||||
|
||||
gem 'jquery-migrate-rails'
|
||||
gem 'jquery-rails', '3.0.4'
|
||||
gem 'jquery-ui-rails', '~> 4.0.0'
|
||||
gem 'select2-rails', '~> 3.4.7'
|
||||
|
||||
gem 'ofn-qz', github: 'openfoodfoundation/ofn-qz', ref: '60da2ae4c44cbb4c8d602f59fb5fff8d0f21db3c'
|
||||
|
||||
|
||||
35
Gemfile.lock
35
Gemfile.lock
@@ -34,18 +34,6 @@ GIT
|
||||
revision: 8a8585a43cd04d1a50dc65227f337a91b18d66d5
|
||||
branch: 2-0-4-stable
|
||||
specs:
|
||||
spree_api (2.0.4)
|
||||
rabl (= 0.8.4)
|
||||
spree_core (= 2.0.4)
|
||||
versioncake (= 1.0.0)
|
||||
spree_backend (2.0.4)
|
||||
deface (>= 0.9.0)
|
||||
jquery-rails (~> 3.0.0)
|
||||
jquery-ui-rails (~> 4.0.0)
|
||||
rails (~> 3.2.8)
|
||||
select2-rails (~> 3.4.7)
|
||||
spree_api (= 2.0.4)
|
||||
spree_core (= 2.0.4)
|
||||
spree_core (2.0.4)
|
||||
activemerchant (~> 1.34)
|
||||
acts_as_list (= 0.2.0)
|
||||
@@ -437,7 +425,7 @@ GEM
|
||||
httparty (0.16.2)
|
||||
multi_xml (>= 0.5.2)
|
||||
i18n (0.6.11)
|
||||
i18n-js (3.5.1)
|
||||
i18n-js (3.6.0)
|
||||
i18n (>= 0.6.6)
|
||||
immigrant (0.3.6)
|
||||
activerecord (>= 3.0)
|
||||
@@ -486,7 +474,7 @@ GEM
|
||||
newrelic_rpm (3.18.1.330)
|
||||
nokogiri (1.6.8.1)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
oauth2 (1.4.3)
|
||||
oauth2 (1.4.4)
|
||||
faraday (>= 0.8, < 2.0)
|
||||
jwt (>= 1.0, < 3.0)
|
||||
multi_json (~> 1.3)
|
||||
@@ -578,6 +566,7 @@ GEM
|
||||
redcarpet (3.5.0)
|
||||
request_store (1.4.1)
|
||||
rack (>= 1.4)
|
||||
rexml (3.2.4)
|
||||
roadie (3.4.0)
|
||||
css_parser (~> 1.4)
|
||||
nokogiri (~> 1.5)
|
||||
@@ -610,11 +599,12 @@ GEM
|
||||
rspec-retry (0.6.2)
|
||||
rspec-core (> 3.3)
|
||||
rspec-support (3.9.0)
|
||||
rubocop (0.79.0)
|
||||
rubocop (0.80.0)
|
||||
jaro_winkler (~> 1.5.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.7.0.1)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
rexml
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 1.7)
|
||||
rubocop-rails (2.4.2)
|
||||
@@ -658,7 +648,7 @@ GEM
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
state_machine (1.2.0)
|
||||
stringex (1.5.1)
|
||||
stripe (5.11.0)
|
||||
stripe (5.15.0)
|
||||
test-unit (3.3.5)
|
||||
power_assert
|
||||
thor (0.20.3)
|
||||
@@ -683,17 +673,13 @@ GEM
|
||||
rack
|
||||
unicorn
|
||||
uuidtools (2.1.5)
|
||||
versioncake (1.0.0)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
warden (1.2.7)
|
||||
rack (>= 1.0)
|
||||
webdrivers (4.2.0)
|
||||
nokogiri (~> 1.6)
|
||||
rubyzip (>= 1.3.0)
|
||||
selenium-webdriver (>= 3.0, < 4.0)
|
||||
webmock (3.8.1)
|
||||
webmock (3.8.2)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
@@ -753,10 +739,11 @@ DEPENDENCIES
|
||||
gmaps4rails
|
||||
haml
|
||||
i18n (~> 0.6.11)
|
||||
i18n-js (~> 3.5.1)
|
||||
i18n-js (~> 3.6.0)
|
||||
immigrant
|
||||
jquery-migrate-rails
|
||||
jquery-rails (= 3.0.4)
|
||||
jquery-ui-rails (~> 4.0.0)
|
||||
json_spec (~> 1.1.4)
|
||||
jwt (~> 2.2)
|
||||
kaminari (~> 0.14.1)
|
||||
@@ -766,7 +753,7 @@ DEPENDENCIES
|
||||
momentjs-rails
|
||||
newrelic_rpm (~> 3.0)
|
||||
nokogiri (>= 1.6.7.1)
|
||||
oauth2 (~> 1.4.3)
|
||||
oauth2 (~> 1.4.4)
|
||||
ofn-qz!
|
||||
oj
|
||||
order_management!
|
||||
@@ -790,12 +777,12 @@ DEPENDENCIES
|
||||
rubocop-rails
|
||||
sass (~> 3.3)
|
||||
sass-rails (~> 3.2.3)
|
||||
select2-rails (~> 3.4.7)
|
||||
selenium-webdriver
|
||||
shoulda-matchers
|
||||
simple_form!
|
||||
simplecov
|
||||
spinjs-rails
|
||||
spree_backend!
|
||||
spree_core!
|
||||
spree_i18n!
|
||||
spree_paypal_express!
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
//= require jquery.jstree/jquery.jstree
|
||||
//= require jquery.vAlign
|
||||
//= require jquery.horizontalNav
|
||||
//= require jquery.adaptivemenu
|
||||
//= require angular
|
||||
//= require angular-resource
|
||||
//= require angular-animate
|
||||
@@ -28,11 +29,9 @@
|
||||
|
||||
// spree
|
||||
//= require spree
|
||||
//= require admin/spree-select2
|
||||
//= require admin/spree_backend
|
||||
//= require admin/spree/spree-select2
|
||||
//= require modernizr
|
||||
//= require spin
|
||||
//= require jquery.adaptivemenu
|
||||
//= require equalize
|
||||
//= require css_browser_selector_dev
|
||||
//= require responsive-tables
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $filter, $http, $window, BulkProducts, DisplayProperties, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, Columns, tax_categories, RequestMonitor, SortOptions) ->
|
||||
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $filter, $http, $window, BulkProducts, DisplayProperties, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, Columns, tax_categories, RequestMonitor, SortOptions, ErrorsParser) ->
|
||||
$scope.StatusMessage = StatusMessage
|
||||
|
||||
$scope.columns = Columns.columns
|
||||
@@ -230,10 +230,9 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
|
||||
BulkProducts.updateVariantLists(data.products || [])
|
||||
$timeout -> $scope.displaySuccess()
|
||||
).error (data, status) ->
|
||||
if status == 400 && data.errors? && data.errors.length > 0
|
||||
errors = error + "\n" for error in data.errors
|
||||
alert t("products_update_error") + "\n" + errors
|
||||
$scope.displayFailure t("products_update_error")
|
||||
if status == 400 && data.errors?
|
||||
errorsString = ErrorsParser.toString(data.errors, status)
|
||||
$scope.displayFailure t("products_update_error") + "\n" + errorsString
|
||||
else
|
||||
$scope.displayFailure t("products_update_error_data") + status
|
||||
|
||||
@@ -284,7 +283,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
|
||||
|
||||
|
||||
$scope.displayFailure = (failMessage) ->
|
||||
StatusMessage.display 'failure', t("products_update_error_msg") + "#{failMessage}"
|
||||
StatusMessage.display 'failure', t("products_update_error_msg") + " #{failMessage}"
|
||||
|
||||
|
||||
$scope.displayDirtyProducts = ->
|
||||
|
||||
@@ -3,6 +3,9 @@ angular.module("admin.orders").directive 'customerSearchOverride', ->
|
||||
scope:
|
||||
distributorId: '@'
|
||||
link: (scope, element, attr) ->
|
||||
if $('#customer_autocomplete_template').length > 0
|
||||
customerTemplate = Handlebars.compile($('#customer_autocomplete_template').text())
|
||||
|
||||
formatCustomerResult = (customer) ->
|
||||
customerTemplate
|
||||
customer: customer
|
||||
|
||||
@@ -21,9 +21,7 @@ angular.module("admin.products").factory "OptionValueNamer", (VariantUnitManager
|
||||
|
||||
else
|
||||
value = @variant.unit_value
|
||||
unit_name = @variant.product.variant_unit_name
|
||||
# TODO needs to add pluralize to line below
|
||||
# unit_name = unit_name if value > 1
|
||||
unit_name = @pluralize(@variant.product.variant_unit_name, value)
|
||||
|
||||
value = parseInt(value, 10) if value == parseInt(value, 10)
|
||||
|
||||
@@ -32,6 +30,21 @@ angular.module("admin.products").factory "OptionValueNamer", (VariantUnitManager
|
||||
|
||||
[value, unit_name]
|
||||
|
||||
pluralize: (unit_name, count) ->
|
||||
return unit_name if count == undefined
|
||||
unit_key = @unit_key(unit_name)
|
||||
return unit_name unless unit_key
|
||||
I18n.t(["inflections", unit_key], {count: count, defaultValue: unit_name})
|
||||
|
||||
unit_key: (unit_name) ->
|
||||
unless I18n.unit_keys
|
||||
I18n.unit_keys = {}
|
||||
for key, translations of I18n.t("inflections")
|
||||
for quantifier, translation of translations
|
||||
I18n.unit_keys[translation.toLowerCase()] = key
|
||||
|
||||
I18n.unit_keys[unit_name.toLowerCase()]
|
||||
|
||||
option_value_value_unit_scaled: ->
|
||||
[unit_scale, unit_name] = @scale_for_unit_value()
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//= require_self
|
||||
//= require admin/handlebar_extensions
|
||||
//= require admin/variant_autocomplete
|
||||
//= require admin/spree/orders/variant_autocomplete
|
||||
|
||||
/**
|
||||
This is a collection of javascript functions and whatnot
|
||||
@@ -21,12 +21,14 @@ jQuery(function($) {
|
||||
if (typeof $('.field.checkbox label').vAlign === 'function' )
|
||||
$('.field.checkbox label').vAlign()
|
||||
|
||||
// if (typeof Spree !== 'undefined') {
|
||||
// $('.main-menu-wrapper ul').AdaptiveMenu({
|
||||
// text: "<a href='#'><i class='icon-chevron-down'></i> " + Spree.translations.more + "</a>",
|
||||
// klass: "dropdown"
|
||||
// });
|
||||
// }
|
||||
// We activate AdaptiveMenu only if not on webdriver
|
||||
// Re-adjusting the admin menu during tests causes tests to fail.
|
||||
if (!navigator.webdriver && typeof Spree !== 'undefined') {
|
||||
$('.main-menu-wrapper ul').AdaptiveMenu({
|
||||
text: "<a href='#'><i class='icon-chevron-down'></i> " + Spree.translations.more + "</a>",
|
||||
klass: "dropdown"
|
||||
});
|
||||
}
|
||||
|
||||
// Add some tips
|
||||
if (typeof $('.with-tip').powerTip === 'function' ) {
|
||||
@@ -174,6 +176,28 @@ $(document).ready(function() {
|
||||
$(target).prepend(new_table_row);
|
||||
})
|
||||
|
||||
$('body').on('click', '.delete-resource', function() {
|
||||
var el = $(this);
|
||||
if (confirm(el.data("confirm"))) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: $(this).attr("href"),
|
||||
data: {
|
||||
_method: 'delete',
|
||||
authenticity_token: AUTH_TOKEN
|
||||
},
|
||||
dataType: 'html',
|
||||
success: function(response) {
|
||||
el.parents("tr").fadeOut('hide');
|
||||
},
|
||||
error: function(response, textStatus, errorThrown) {
|
||||
show_flash_error(response.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
// Fix sortable helper
|
||||
var fixHelper = function(e, ui) {
|
||||
ui.children().each(function() {
|
||||
|
||||
16
app/assets/javascripts/admin/spree/calculator.js
Normal file
16
app/assets/javascripts/admin/spree/calculator.js
Normal file
@@ -0,0 +1,16 @@
|
||||
$(function() {
|
||||
var calculator_select = $('select#calc_type')
|
||||
var original_calc_type = calculator_select.attr('value');
|
||||
$('.calculator-settings-warning').hide();
|
||||
calculator_select.change(function() {
|
||||
if (calculator_select.attr('value') == original_calc_type) {
|
||||
$('div.calculator-settings').show();
|
||||
$('.calculator-settings-warning').hide();
|
||||
$('.calculator-settings').find('input,textarea').prop("disabled", false);
|
||||
} else {
|
||||
$('div.calculator-settings').hide();
|
||||
$('.calculator-settings-warning').show();
|
||||
$('.calculator-settings').find('input,texttarea').prop("disabled", true);
|
||||
}
|
||||
});
|
||||
})
|
||||
59
app/assets/javascripts/admin/spree/image_settings.js.erb
Normal file
59
app/assets/javascripts/admin/spree/image_settings.js.erb
Normal file
@@ -0,0 +1,59 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
if ($('input#preferences_use_s3[type="checkbox"]:checked').length > 0) {
|
||||
$('#s3_settings, #s3_headers').show();
|
||||
}
|
||||
|
||||
// Toggle display of S3 settings based on value of use_s3 checkbox
|
||||
$('input#preferences_use_s3[type="checkbox"]').click(function() {
|
||||
$('#s3_settings, #s3_headers').toggle();
|
||||
});
|
||||
|
||||
$(document).on('click', '.destroy_style', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).parent().remove();
|
||||
});
|
||||
|
||||
$(document).on('click', '.destroy_new_attachment_styles', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest('.new_attachment_styles').remove();
|
||||
});
|
||||
|
||||
$(document).on('click', '.destroy_new_s3_headers', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).closest('.new_s3_headers').remove();
|
||||
});
|
||||
|
||||
// Handle adding new styles
|
||||
var styles_hash_index = 1;
|
||||
$(document).on('click', '.add_new_style', function(e) {
|
||||
e.preventDefault();
|
||||
$('#new-styles').append(generate_html_for_hash("new_attachment_styles", styles_hash_index));
|
||||
});
|
||||
|
||||
// Handle adding new headers
|
||||
var headers_hash_index = 1;
|
||||
$(document).on('click', '.add_header', function(e) {
|
||||
e.preventDefault();
|
||||
$('#headers_list').append(generate_html_for_hash("new_s3_headers", headers_hash_index));
|
||||
});
|
||||
|
||||
// Generates html for new paperclip styles form fields
|
||||
generate_html_for_hash = function(hash_name, index) {
|
||||
var html = '<div class="' + hash_name + ' row"><div class="field">';
|
||||
html += '<div class="five columns">';
|
||||
html += '<label for="' + hash_name + '_' + index + '_name">';
|
||||
html += Spree.translations.name + '</label>';
|
||||
html += '<input id="' + hash_name + '_' + index + '_name" name="' + hash_name + '[' + index + '][name]" type="text" class="fullwidth"><br>';
|
||||
html += '</div><div class="five columns">'
|
||||
html += '<label for="' + hash_name + '_' + index + '_value">';
|
||||
html += Spree.translations.value + '</label>';
|
||||
html += '<input id="' + hash_name + '_' + index + '_value" name="' + hash_name + '[' + index + '][value]" type="text" class="fullwidth">';
|
||||
html += '</div><div class="two columns">'
|
||||
html += '<a href="#" title="' + Spree.translations.destroy + '" class="destroy_' + hash_name + ' with-tip button" style="margin-top: 19px;"><i class="icon-trash"></i> ' + Spree.translations.destroy + '</a>';
|
||||
html += '</div></div></div>';
|
||||
|
||||
index += 1;
|
||||
return html;
|
||||
};
|
||||
});
|
||||
23
app/assets/javascripts/admin/spree/nested-attribute.js
Normal file
23
app/assets/javascripts/admin/spree/nested-attribute.js
Normal file
@@ -0,0 +1,23 @@
|
||||
//On page load
|
||||
replace_ids = function(s){
|
||||
var new_id = new Date().getTime();
|
||||
return s.replace(/NEW_RECORD/g, new_id);
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$('a[id*=nested]').click(function() {
|
||||
var template = $(this).attr('href').replace(/.*#/, '');
|
||||
html = replace_ids(eval(template));
|
||||
$('#ul-' + $(this).attr('id')).append(html);
|
||||
update_remove_links();
|
||||
});
|
||||
update_remove_links();
|
||||
})
|
||||
|
||||
var update_remove_links = function() {
|
||||
$('.remove').click(function() {
|
||||
$(this).prevAll(':first').val(1);
|
||||
$(this).parent().hide();
|
||||
return false;
|
||||
});
|
||||
};
|
||||
@@ -15,11 +15,11 @@ $(document).ready(function() {
|
||||
console.log(msg);
|
||||
});
|
||||
}
|
||||
// $('[data-hook=admin_order_edit_form] a.ship').click(handle_ship_click);
|
||||
$('[data-hook=admin_order_edit_form] a.ship').click(handle_ship_click);
|
||||
|
||||
//handle shipping method edit click
|
||||
// $('a.edit-method').click(toggleMethodEdit);
|
||||
// $('a.cancel-method').click(toggleMethodEdit);
|
||||
$('a.edit-method').click(toggleMethodEdit);
|
||||
$('a.cancel-method').click(toggleMethodEdit);
|
||||
|
||||
handle_shipping_method_save = function(){
|
||||
var link = $(this);
|
||||
@@ -38,11 +38,11 @@ $(document).ready(function() {
|
||||
console.log(msg);
|
||||
});
|
||||
}
|
||||
// $('[data-hook=admin_order_edit_form] a.save-method').click(handle_shipping_method_save);
|
||||
$('[data-hook=admin_order_edit_form] a.save-method').click(handle_shipping_method_save);
|
||||
|
||||
//handle tracking edit click
|
||||
// $('a.edit-tracking').click(toggleTrackingEdit);
|
||||
// $('a.cancel-tracking').click(toggleTrackingEdit);
|
||||
$('a.edit-tracking').click(toggleTrackingEdit);
|
||||
$('a.cancel-tracking').click(toggleTrackingEdit);
|
||||
|
||||
handle_tracking_save = function(){
|
||||
var link = $(this);
|
||||
|
||||
@@ -29,10 +29,10 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
//handle edit click
|
||||
// $('a.edit-item').click(toggleItemEdit);
|
||||
$('a.edit-item').click(toggleItemEdit);
|
||||
|
||||
//handle cancel click
|
||||
// $('a.cancel-item').click(toggleItemEdit);
|
||||
$('a.cancel-item').click(toggleItemEdit);
|
||||
|
||||
handle_save_click = function(){
|
||||
var save = $(this);
|
||||
@@ -46,7 +46,7 @@ $(document).ready(function() {
|
||||
adjustItems(shipment_number, variant_id, quantity);
|
||||
return false;
|
||||
}
|
||||
// $('a.save-item').click(handle_save_click);
|
||||
$('a.save-item').click(handle_save_click);
|
||||
|
||||
handle_delete_click = function(){
|
||||
var del = $(this);
|
||||
@@ -57,7 +57,7 @@ $(document).ready(function() {
|
||||
|
||||
adjustItems(shipment_number, variant_id, 0);
|
||||
}
|
||||
// $('a.delete-item').click(handle_delete_click);
|
||||
$('a.delete-item').click(handle_delete_click);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -139,39 +139,3 @@ addVariantFromStockLocation = function() {
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
formatVariantResult = function(variant) {
|
||||
if (variant["images"][0] != undefined && variant["images"][0].urls != undefined) {
|
||||
variant.image = variant.images[0].urls.mini
|
||||
}
|
||||
return variantTemplate({ variant: variant })
|
||||
}
|
||||
|
||||
$.fn.variantAutocomplete = function() {
|
||||
this.parent().children(".options_placeholder").attr('id', this.parent().data('index'))
|
||||
this.select2({
|
||||
placeholder: Spree.translations.variant_placeholder,
|
||||
minimumInputLength: 3,
|
||||
ajax: {
|
||||
url: Spree.url(Spree.routes.variants_search),
|
||||
datatype: 'json',
|
||||
data: function(term, page) {
|
||||
return {
|
||||
q: {
|
||||
"product_name_or_sku_cont": term
|
||||
}
|
||||
}
|
||||
},
|
||||
results: function (data, page) {
|
||||
window.variants = data['variants'];
|
||||
|
||||
return { results: data['variants'] }
|
||||
}
|
||||
},
|
||||
formatResult: formatVariantResult,
|
||||
formatSelection: function (variant) {
|
||||
$(this.element).parent().children('.options_placeholder').html(variant.options_text)
|
||||
return variant.name;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
8
app/assets/javascripts/admin/spree/states.js
Executable file
8
app/assets/javascripts/admin/spree/states.js
Executable file
@@ -0,0 +1,8 @@
|
||||
$(document).ready(function() {
|
||||
$("#country").change(function() {
|
||||
var new_state_link_href = $('#new_state_link a').attr('href');
|
||||
var selected_country_id = $('#country option:selected').attr('value');
|
||||
var new_link = new_state_link_href.replace(/countries\/(\d+)/, 'countries/'+selected_country_id);
|
||||
$('#new_state_link a').attr('href', new_link);
|
||||
});
|
||||
});
|
||||
43
app/assets/javascripts/admin/spree/zone.js.coffee
Normal file
43
app/assets/javascripts/admin/spree/zone.js.coffee
Normal file
@@ -0,0 +1,43 @@
|
||||
$ ->
|
||||
($ '#country_based').click ->
|
||||
show_country()
|
||||
|
||||
($ '#state_based').click ->
|
||||
show_state()
|
||||
|
||||
if ($ '#country_based').is(':checked')
|
||||
show_country()
|
||||
else if ($ '#state_based').is(':checked')
|
||||
show_state()
|
||||
else
|
||||
show_state()
|
||||
($ '#state_based').click()
|
||||
|
||||
|
||||
show_country = ->
|
||||
($ '#state_members :input').each ->
|
||||
($ this).prop 'disabled', true
|
||||
|
||||
($ '#state_members').hide()
|
||||
($ '#zone_members :input').each ->
|
||||
($ this).prop 'disabled', true
|
||||
|
||||
($ '#zone_members').hide()
|
||||
($ '#country_members :input').each ->
|
||||
($ this).prop 'disabled', false
|
||||
|
||||
($ '#country_members').show()
|
||||
|
||||
show_state = ->
|
||||
($ '#country_members :input').each ->
|
||||
($ this).prop 'disabled', true
|
||||
|
||||
($ '#country_members').hide()
|
||||
($ '#zone_members :input').each ->
|
||||
($ this).prop 'disabled', true
|
||||
|
||||
($ '#zone_members').hide()
|
||||
($ '#state_members :input').each ->
|
||||
($ this).prop 'disabled', false
|
||||
|
||||
($ '#state_members').show()
|
||||
0
app/assets/javascripts/admin/spree_backend.js
Normal file
0
app/assets/javascripts/admin/spree_backend.js
Normal file
@@ -1,10 +1,6 @@
|
||||
angular.module("admin.utils").directive "variantAutocomplete", ($timeout) ->
|
||||
restrict: 'C'
|
||||
link: (scope, element, attrs) ->
|
||||
# Make variantAutocomplete do nothing because it is called
|
||||
# from core/app/assets/javascripts/admin/orders/edit.js
|
||||
$.fn.variantAutocomplete = angular.noop
|
||||
|
||||
$timeout ->
|
||||
if $("#variant_autocomplete_template").length > 0
|
||||
variantTemplate = Handlebars.compile($("#variant_autocomplete_template").text())
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Parses a structure of errors that came from the server
|
||||
angular.module("admin.utils").factory "ErrorsParser", ->
|
||||
new class ErrorsParser
|
||||
toString: (errors, defaultContent = "") =>
|
||||
return defaultContent unless errors?
|
||||
|
||||
errorsString = ""
|
||||
if errors.length > 0
|
||||
# it is an array of errors
|
||||
errorsString = errors.join("\n") + "\n"
|
||||
else
|
||||
# it is a hash of errors
|
||||
keys = Object.keys(errors)
|
||||
for key in keys
|
||||
errorsString += errors[key].join("\n") + "\n"
|
||||
|
||||
this.defaultIfEmpty(errorsString, defaultContent)
|
||||
|
||||
defaultIfEmpty: (content, defaultContent) =>
|
||||
return defaultContent if content == ""
|
||||
content
|
||||
@@ -4,15 +4,15 @@
|
||||
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
||||
*
|
||||
|
||||
*= require admin/spree_backend
|
||||
*= require jquery.powertip
|
||||
*= require responsive-tables
|
||||
*= require normalize
|
||||
*= require skeleton
|
||||
*= require responsive-tables
|
||||
*= require jquery.powertip
|
||||
*= require jquery.ui.datepicker
|
||||
*= require jquery-ui-timepicker-addon
|
||||
*= require shared/textAngular
|
||||
*= require shared/ng-tags-input.min
|
||||
*= require select2
|
||||
|
||||
*= require_self
|
||||
*/
|
||||
@@ -33,6 +33,11 @@
|
||||
@import 'plugins/powertip';
|
||||
@import 'plugins/jstree';
|
||||
@import 'plugins/font-awesome';
|
||||
@import 'plugins/select2';
|
||||
|
||||
@import 'sections/image_settings';
|
||||
@import 'sections/orders';
|
||||
@import 'sections/products';
|
||||
|
||||
@import 'hacks/mozilla';
|
||||
@import 'hacks/opera';
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
.destroy_style, .destroy_header {
|
||||
float: right;
|
||||
}
|
||||
@@ -70,10 +70,6 @@ module Spree
|
||||
Spree.t(event_sym, resource: resource_desc)
|
||||
end
|
||||
|
||||
def render_js_for_destroy
|
||||
render partial: '/spree/admin/shared/destroy'
|
||||
end
|
||||
|
||||
# Index request for JSON needs to pass a CSRF token in order to prevent JSON Hijacking
|
||||
def check_json_authenticity
|
||||
return unless request.format.js? || request.format.json?
|
||||
@@ -86,10 +82,6 @@ module Spree
|
||||
raise(ActionController::InvalidAuthenticityToken)
|
||||
end
|
||||
|
||||
def config_locale
|
||||
Spree::Backend::Config[:locale]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def html_request?
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: false
|
||||
|
||||
module Spree
|
||||
module Admin
|
||||
module NavigationHelper
|
||||
@@ -34,7 +36,9 @@ module Spree
|
||||
end
|
||||
|
||||
selected = if options[:match_path]
|
||||
request.fullpath.starts_with?("#{spree.root_path}admin#{options[:match_path]}")
|
||||
request.
|
||||
fullpath.
|
||||
starts_with?("#{main_app.root_path}admin#{options[:match_path]}")
|
||||
else
|
||||
args.include?(controller.controller_name.to_sym)
|
||||
end
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
require 'open_food_network/permissions'
|
||||
|
||||
module Permissions
|
||||
class Order
|
||||
def initialize(user)
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
= t('.variants')
|
||||
|
||||
%td.actions
|
||||
%a.edit-order-cycle.icon-edit.no-text{ ng: { href: '{{orderCycle.edit_path}}'} }
|
||||
%a.edit-order-cycle.icon-edit.no-text{ ng: { href: '{{orderCycle.edit_path}}'}, 'ofn-with-tip' => t(:edit) }
|
||||
%td.actions{ ng: { if: 'orderCycle.viewing_as_coordinator' } }
|
||||
%a.clone-order-cycle.icon-copy.no-text{ ng: { href: '{{orderCycle.clone_path}}'} }
|
||||
%td.actions{ ng: { if: 'orderCycle.deletable && orderCycle.viewing_as_coordinator' } }
|
||||
%a.delete-order-cycle.icon-trash.no-text{ ng: { href: '{{orderCycle.delete_path}}'}, data: { method: 'delete', confirm: t(:are_you_sure) } }
|
||||
%a.clone-order-cycle.icon-copy.no-text{ ng: { href: '{{orderCycle.clone_path}}'}, 'ofn-with-tip' => t(:clone) }
|
||||
%td.actions{ ng: { if: 'orderCycle.deletable && orderCycle.viewing_as_coordinator' }}
|
||||
%a.delete-order-cycle.icon-trash.no-text{ ng: { href: '{{orderCycle.delete_path}}'}, data: { method: 'delete', confirm: t(:are_you_sure) }, 'ofn-with-tip' => t(:remove) }
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
%span.or= t('spree.or')
|
||||
= link_to_with_icon 'icon-remove', t('spree.actions.cancel'), admin_product_images_url(@product), id: 'cancel_link', class: 'button'
|
||||
|
||||
= javascript_include_tag 'admin/images/new.js'
|
||||
= javascript_include_tag 'admin/spree/images/new.js'
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<script type='text/template' id='customer_autocomplete_template'>
|
||||
<div class='customer-autocomplete-item'>
|
||||
<div class='customer-details'>
|
||||
<h5>{{customer.email}}</h5>
|
||||
{{#if bill_address.firstname }}
|
||||
<strong>{{t 'bill_address' }}</strong>
|
||||
{{bill_address.firstname}} {{bill_address.lastname}}<br>
|
||||
{{bill_address.address1}}, {{bill_address.address2}}<br>
|
||||
{{bill_address.city}}<br>
|
||||
{{#if bill_address.state_id }}
|
||||
{{bill_address.state.name}}
|
||||
{{else}}
|
||||
{{bill_address.state_name}}
|
||||
{{/if}}
|
||||
{{bill_address.country.name}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
@@ -18,7 +18,6 @@
|
||||
= render "spree/admin/shared/routes"
|
||||
|
||||
%script
|
||||
= "jQuery.alerts.dialogClass = 'spree';"
|
||||
= raw "var AUTH_TOKEN = \"#{form_authenticity_token}\";"
|
||||
|
||||
= render "layouts/bugherd_script"
|
||||
|
||||
15
config/initializers/form_builder.rb
Normal file
15
config/initializers/form_builder.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
#
|
||||
# Allow some application_helper methods to be used in the scoped form_for manner
|
||||
#
|
||||
class ActionView::Helpers::FormBuilder
|
||||
def field_container(method, options = {}, &block)
|
||||
@template.field_container(@object_name,method,options,&block)
|
||||
end
|
||||
|
||||
def error_message_on(method, options = {})
|
||||
@template.error_message_on(@object_name, method, objectify_options(options))
|
||||
end
|
||||
end
|
||||
|
||||
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "<span class=\"field_with_errors\">#{html_tag}</span>".html_safe }
|
||||
|
||||
@@ -1281,6 +1281,7 @@ ar:
|
||||
saving_credit_card: جارٍ حفظ بطاقة الائتمان ...
|
||||
card_has_been_removed: "تمت إزالة بطاقتك (الرقم: %{number})"
|
||||
card_could_not_be_removed: عذرًا ، تعذرت إزالة البطاقة
|
||||
invalid_credit_card: "بطاقة الائتمان غير صالحة"
|
||||
ie_warning_headline: "متصفحك غير محدث :-("
|
||||
ie_warning_text: "للحصول على أفضل تجربة لشبكة الغذاء المفتوح ، نوصي بشدة بترقية متصفحك:"
|
||||
ie_warning_chrome: تحميل متصفح كروم
|
||||
@@ -2425,11 +2426,11 @@ ar:
|
||||
description: وصف
|
||||
resolve: حل
|
||||
exchange_products:
|
||||
load_more_products: "تحميل المزيد من المنتجات"
|
||||
load_all_products: "تحميل جميع المنتجات"
|
||||
select_all_products: "حدد جميع المنتجات %{total_number_of_products}"
|
||||
products_loaded: "%{num_of_products_loaded} من %{total_number_of_products} المنتجات المحملة"
|
||||
loading_products: "تحميل المنتجات"
|
||||
load_more_variants: "تحميل المزيد من المتغيرات"
|
||||
load_all_variants: "تحميل جميع المتغيرات"
|
||||
select_all_variants: "حدد كل %{total_number_of_variants} المتغيرات"
|
||||
variants_loaded: "%{num_of_variants_loaded} من %{total_number_of_variants} تم تحميل المتغيرات"
|
||||
loading_variants: "تحميل المتغيرات"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "طرق الشحن الموسومة"
|
||||
shipping_method_tagged_bottom: "هي:"
|
||||
@@ -2588,6 +2589,21 @@ ar:
|
||||
signup_or_login: "البدء بالتسجيل (أو تسجيل الدخول)"
|
||||
have_an_account: "هل لديك حساب؟"
|
||||
action_login: "تسجيل الدخول الآن."
|
||||
inflections:
|
||||
each:
|
||||
zero: "كل"
|
||||
one: "كل"
|
||||
two: "كل"
|
||||
few: "كل"
|
||||
many: "كل"
|
||||
other: "كل"
|
||||
pack:
|
||||
zero: "حزم"
|
||||
one: "رزمة"
|
||||
two: "حزم"
|
||||
few: "حزم"
|
||||
many: "حزم"
|
||||
other: "حزم"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "ابدأ بملف تعريف مجاني ، وتوسع عندما تكون جاهزًا!"
|
||||
@@ -2830,6 +2846,8 @@ ar:
|
||||
zipcode: الرمز البريدي
|
||||
weight: الوزن (لكل كجم)
|
||||
error_user_destroy_with_orders: "لا يمكن حذف المستخدمين الذين لديهم طلبات مكتملة"
|
||||
cannot_create_payment_without_payment_methods: "لا يمكنك إنشاء دفعة لطلب بدون تحديد طرقة الدفع."
|
||||
please_define_payment_methods: "يرجى تحديد بعض طرق الدفع أولاً."
|
||||
options: "خيارات"
|
||||
actions:
|
||||
update: "تحديث"
|
||||
|
||||
@@ -2430,12 +2430,6 @@ ca:
|
||||
severity: Severitat
|
||||
description: Descripció
|
||||
resolve: Resoldre
|
||||
exchange_products:
|
||||
load_more_products: "Carrega més productes"
|
||||
load_all_products: "Carrega tots els productes"
|
||||
select_all_products: "Seleccioneu tots els productes %{total_number_of_products}"
|
||||
products_loaded: "%{num_of_products_loaded} de %{total_number_of_products} productes carregats"
|
||||
loading_products: "Carregant productes"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Els mètodes d'enviament etiquetats"
|
||||
shipping_method_tagged_bottom: "son:"
|
||||
|
||||
@@ -2575,6 +2575,10 @@ de_DE:
|
||||
signup_or_login: "Beginnen Sie mit der Anmeldung (oder melden Sie sich an)"
|
||||
have_an_account: "Hast du schon ein Konto?"
|
||||
action_login: "Jetzt einloggen."
|
||||
inflections:
|
||||
bottle:
|
||||
one: "Flasche"
|
||||
other: "Flaschen"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Beginnen Sie mit einem kostenlosen Profil und erweitern Sie es, wenn Sie fertig sind!"
|
||||
|
||||
@@ -2722,6 +2722,90 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
|
||||
# Singular and plural forms of commonly used words.
|
||||
# We use these entries to pluralize unit names in every language.
|
||||
#
|
||||
# Extracted with the following query:
|
||||
# Spree::Product.group(:variant_unit_name).order("count_all DESC").count.each { |name, count|
|
||||
# puts " # Used #{count} times."
|
||||
# puts " #{name&.parameterize('_')}:"
|
||||
# puts " one: \"#{name}\""
|
||||
# puts " other: \"#{name}s\"";
|
||||
# }
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a free profile, and expand when you're ready!"
|
||||
|
||||
@@ -919,7 +919,7 @@ en_CA:
|
||||
distributors: distributors
|
||||
variants: variants
|
||||
simple_form:
|
||||
ready_for: Ready for
|
||||
ready_for: Options
|
||||
ready_for_placeholder: Date / time
|
||||
customer_instructions: Customer instructions
|
||||
customer_instructions_placeholder: 'Notes:'
|
||||
@@ -1282,6 +1282,7 @@ en_CA:
|
||||
saving_credit_card: Saving credit card...
|
||||
card_has_been_removed: "Your card has been removed (number: %{number})"
|
||||
card_could_not_be_removed: Sorry, the card could not be removed
|
||||
invalid_credit_card: "Invalid credit card"
|
||||
ie_warning_headline: "Your browser is out of date :-("
|
||||
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
|
||||
ie_warning_chrome: Download Chrome
|
||||
@@ -2424,11 +2425,11 @@ en_CA:
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
exchange_products:
|
||||
load_more_products: "Load More Products"
|
||||
load_all_products: "Load All Products"
|
||||
select_all_products: "Select All %{total_number_of_products}Products"
|
||||
products_loaded: "%{num_of_products_loaded}of %{total_number_of_products} Products Loaded"
|
||||
loading_products: "Loading Products"
|
||||
load_more_variants: "Load More Variants"
|
||||
load_all_variants: "Load All Variants"
|
||||
select_all_variants: "Select All %{total_number_of_variants}Variants"
|
||||
variants_loaded: "%{num_of_variants_loaded}of%{total_number_of_variants}Variants Loaded"
|
||||
loading_variants: "Loading Variants"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
@@ -2587,6 +2588,79 @@ en_CA:
|
||||
signup_or_login: "Start By Signing Up (or logging in)"
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a free profile, and expand when you're ready!"
|
||||
@@ -2829,6 +2903,8 @@ en_CA:
|
||||
zipcode: Postal Code
|
||||
weight: Weight (per kg)
|
||||
error_user_destroy_with_orders: "Users with completed orders may not be deleted"
|
||||
cannot_create_payment_without_payment_methods: "You cannot create a payment for an order without any payment methods defined."
|
||||
please_define_payment_methods: "Please define some payment methods first."
|
||||
options: "Options"
|
||||
actions:
|
||||
update: "Update"
|
||||
@@ -2935,7 +3011,7 @@ en_CA:
|
||||
email: "Customer E-Mail"
|
||||
invoice:
|
||||
issued_on: "Issued on"
|
||||
tax_invoice: "TAX INVOICE"
|
||||
tax_invoice: "Order Number"
|
||||
code: "Code"
|
||||
from: "From"
|
||||
to: "To"
|
||||
|
||||
@@ -1282,6 +1282,7 @@ en_FR:
|
||||
saving_credit_card: Saving credit card...
|
||||
card_has_been_removed: "Your card has been removed (number: %{number})"
|
||||
card_could_not_be_removed: Sorry, the card could not be removed
|
||||
invalid_credit_card: "Invalid credit card"
|
||||
ie_warning_headline: "Your browser is out of date :-("
|
||||
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
|
||||
ie_warning_chrome: Download Chrome
|
||||
@@ -2425,11 +2426,11 @@ en_FR:
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
exchange_products:
|
||||
load_more_products: "Load More Products"
|
||||
load_all_products: "Load All Products"
|
||||
select_all_products: "Select All %{total_number_of_products} Products"
|
||||
products_loaded: "%{num_of_products_loaded}of %{total_number_of_products} Products Loaded"
|
||||
loading_products: "Loading Products"
|
||||
load_more_variants: "Load All Variants"
|
||||
load_all_variants: "Load All Variants"
|
||||
select_all_variants: "Select All %{total_number_of_variants} Variants"
|
||||
variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} Variants Loaded"
|
||||
loading_variants: "Loading Variants"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
@@ -2588,6 +2589,79 @@ en_FR:
|
||||
signup_or_login: "Start By Signing Up (or logging in)"
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a free profile, and expand when you're ready!"
|
||||
|
||||
@@ -1282,6 +1282,7 @@ en_GB:
|
||||
saving_credit_card: Saving credit card...
|
||||
card_has_been_removed: "Your card has been removed (number: %{number})"
|
||||
card_could_not_be_removed: Sorry, the card could not be removed
|
||||
invalid_credit_card: "Invalid credit card"
|
||||
ie_warning_headline: "Your browser is out of date :-("
|
||||
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
|
||||
ie_warning_chrome: Download Chrome
|
||||
@@ -2431,11 +2432,11 @@ en_GB:
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
exchange_products:
|
||||
load_more_products: "Load More Products"
|
||||
load_all_products: "Load All Products"
|
||||
select_all_products: "Select All %{total_number_of_products} Products"
|
||||
products_loaded: "%{num_of_products_loaded} of %{total_number_of_products} Products Loaded"
|
||||
loading_products: "Loading Products"
|
||||
load_more_variants: "Load More Variants"
|
||||
load_all_variants: "Load All Variants"
|
||||
select_all_variants: "Select All %{total_number_of_variants} Variants"
|
||||
variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} Variants Loaded"
|
||||
loading_variants: "Loading Variants"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
@@ -2594,6 +2595,79 @@ en_GB:
|
||||
signup_or_login: "Start By signing up (or logging in)"
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a free profile, and expand when you're ready!"
|
||||
|
||||
@@ -1282,6 +1282,7 @@ en_NZ:
|
||||
saving_credit_card: Saving credit card...
|
||||
card_has_been_removed: "Your card has been removed (number: %{number})"
|
||||
card_could_not_be_removed: Sorry, the card could not be removed
|
||||
invalid_credit_card: "Invalid credit card"
|
||||
ie_warning_headline: "Your browser is out of date :-("
|
||||
ie_warning_text: "For the best Open Food Network experience, we strongly recommend upgrading your browser:"
|
||||
ie_warning_chrome: Download Chrome
|
||||
@@ -2425,11 +2426,11 @@ en_NZ:
|
||||
description: Description
|
||||
resolve: Resolve
|
||||
exchange_products:
|
||||
load_more_products: "Load More Products"
|
||||
load_all_products: "Load All Products"
|
||||
select_all_products: "Select All %{total_number_of_products} Products"
|
||||
products_loaded: "%{num_of_products_loaded} of %{total_number_of_products} Products Loaded"
|
||||
loading_products: "Loading Products"
|
||||
load_more_variants: "Load More Variants"
|
||||
load_all_variants: "Load All Variants"
|
||||
select_all_variants: "Select All %{total_number_of_variants} Variants"
|
||||
variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} Variants Loaded"
|
||||
loading_variants: "Loading Variants"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Shipping methods tagged"
|
||||
shipping_method_tagged_bottom: "are:"
|
||||
@@ -2588,6 +2589,79 @@ en_NZ:
|
||||
signup_or_login: "Start By Signing Up (or logging in)"
|
||||
have_an_account: "Already have an account?"
|
||||
action_login: "Log in now."
|
||||
inflections:
|
||||
each:
|
||||
one: "each"
|
||||
other: "each"
|
||||
bunch:
|
||||
one: "bunch"
|
||||
other: "bunches"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "packs"
|
||||
box:
|
||||
one: "box"
|
||||
other: "boxes"
|
||||
bottle:
|
||||
one: "bottle"
|
||||
other: "bottles"
|
||||
jar:
|
||||
one: "jar"
|
||||
other: "jars"
|
||||
head:
|
||||
one: "head"
|
||||
other: "heads"
|
||||
bag:
|
||||
one: "bag"
|
||||
other: "bags"
|
||||
loaf:
|
||||
one: "loaf"
|
||||
other: "loaves"
|
||||
single:
|
||||
one: "single"
|
||||
other: "singles"
|
||||
tub:
|
||||
one: "tub"
|
||||
other: "tubs"
|
||||
punnet:
|
||||
one: "punnet"
|
||||
other: "punnets"
|
||||
packet:
|
||||
one: "packet"
|
||||
other: "packets"
|
||||
item:
|
||||
one: "item"
|
||||
other: "items"
|
||||
dozen:
|
||||
one: "dozen"
|
||||
other: "dozens"
|
||||
unit:
|
||||
one: "unit"
|
||||
other: "units"
|
||||
serve:
|
||||
one: "serve"
|
||||
other: "serves"
|
||||
tray:
|
||||
one: "tray"
|
||||
other: "trays"
|
||||
piece:
|
||||
one: "piece"
|
||||
other: "pieces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "bundle"
|
||||
other: "bundles"
|
||||
flask:
|
||||
one: "flask"
|
||||
other: "flasks"
|
||||
basket:
|
||||
one: "basket"
|
||||
other: "baskets"
|
||||
sack:
|
||||
one: "sack"
|
||||
other: "sacks"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start with a basic profile, and expand when you're ready!"
|
||||
|
||||
@@ -1284,6 +1284,7 @@ fr:
|
||||
saving_credit_card: Enregistrement de la carte de crédit...
|
||||
card_has_been_removed: "Votre carte a été supprimée (numéro : %{number})"
|
||||
card_could_not_be_removed: Désolée, la carte n'a pas pu être supprimée :-(
|
||||
invalid_credit_card: "Cette carte de crédit n'est pas valide"
|
||||
ie_warning_headline: "Votre navigateur n'est pas à jour :-("
|
||||
ie_warning_text: "Pour une expérience optimale sur Open Food France, nous vous recommandons fortement de mettre à jour votre navigateur:"
|
||||
ie_warning_chrome: Télécharger Chrome
|
||||
@@ -2454,11 +2455,11 @@ fr:
|
||||
description: Description
|
||||
resolve: Résoudre
|
||||
exchange_products:
|
||||
load_more_products: "Voir plus de produits"
|
||||
load_all_products: "Voir tous les produits"
|
||||
select_all_products: "Sélectionner tous les %{total_number_of_products}produits"
|
||||
products_loaded: "%{num_of_products_loaded}sur %{total_number_of_products}produits affichés"
|
||||
loading_products: "Produits en cours de chargement"
|
||||
load_more_variants: "Afficher plus de variantes"
|
||||
load_all_variants: "Afficher toutes les variantes"
|
||||
select_all_variants: "Sélectionnez toutes les %{total_number_of_variants} variantes"
|
||||
variants_loaded: " %{num_of_variants_loaded}sur %{total_number_of_variants} variantes"
|
||||
loading_variants: "Chargement des variantes"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Les méthodes de livraison taguées"
|
||||
shipping_method_tagged_bottom: "sont:"
|
||||
@@ -2618,6 +2619,79 @@ fr:
|
||||
signup_or_login: "Commencez par vous inscrire (ou connexion)"
|
||||
have_an_account: "Déjà inscrit?"
|
||||
action_login: "Se connecter."
|
||||
inflections:
|
||||
each:
|
||||
one: "chacun"
|
||||
other: "chacun"
|
||||
bunch:
|
||||
one: "bouquet"
|
||||
other: "bouquets"
|
||||
pack:
|
||||
one: "caisse"
|
||||
other: "caisses"
|
||||
box:
|
||||
one: "boîte"
|
||||
other: "boîtes"
|
||||
bottle:
|
||||
one: "bouteille"
|
||||
other: "bouteilles"
|
||||
jar:
|
||||
one: "bocal"
|
||||
other: "bocaux"
|
||||
head:
|
||||
one: "tête"
|
||||
other: "têtes"
|
||||
bag:
|
||||
one: "sac"
|
||||
other: "sacs"
|
||||
loaf:
|
||||
one: "miche"
|
||||
other: "miches"
|
||||
single:
|
||||
one: "unité"
|
||||
other: "unités"
|
||||
tub:
|
||||
one: "bac"
|
||||
other: "bacs"
|
||||
punnet:
|
||||
one: "barquette"
|
||||
other: "barquettes"
|
||||
packet:
|
||||
one: "paquet"
|
||||
other: "paquets"
|
||||
item:
|
||||
one: "article"
|
||||
other: "articles"
|
||||
dozen:
|
||||
one: "dizaine"
|
||||
other: "dizaines"
|
||||
unit:
|
||||
one: "unité"
|
||||
other: "unités"
|
||||
serve:
|
||||
one: "service"
|
||||
other: "services"
|
||||
tray:
|
||||
one: "plateau"
|
||||
other: "plateaux"
|
||||
piece:
|
||||
one: "pièce"
|
||||
other: "pièces"
|
||||
pot:
|
||||
one: "pot"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "botte"
|
||||
other: "bottes"
|
||||
flask:
|
||||
one: "flacon"
|
||||
other: "flacons"
|
||||
basket:
|
||||
one: "panier"
|
||||
other: "paniers"
|
||||
sack:
|
||||
one: "sachet"
|
||||
other: "sachets"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Commencez par créer votre profil entreprise, et changez de formule quand vous êtes prêt !"
|
||||
|
||||
@@ -2438,12 +2438,6 @@ fr_BE:
|
||||
severity: Rigueur
|
||||
description: Description
|
||||
resolve: Résoudre
|
||||
exchange_products:
|
||||
load_more_products: "Charger plus de produits"
|
||||
load_all_products: "Charger tous les produits"
|
||||
select_all_products: "Sélectionner tout les produits %{total_number_of_products}"
|
||||
products_loaded: "Chargés produits %{num_of_products_loaded}ou%{total_number_of_products}"
|
||||
loading_products: "Chargement des produits"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Méthodes d'expédition étiquetées"
|
||||
shipping_method_tagged_bottom: "sont:"
|
||||
|
||||
@@ -1284,6 +1284,7 @@ fr_CA:
|
||||
saving_credit_card: Enregistrement de la carte de crédit...
|
||||
card_has_been_removed: "Votre carte a été supprimée (numéro : %{number})"
|
||||
card_could_not_be_removed: Désolée, la carte n'a pas pu être supprimée :-(
|
||||
invalid_credit_card: "Cette carte de crédit n'est pas valide"
|
||||
ie_warning_headline: "Votre navigateur n'est pas à jour :-("
|
||||
ie_warning_text: "Pour une expérience optimale sur Open Food Network, nous vous recommandons fortement de mettre à jour votre navigateur:"
|
||||
ie_warning_chrome: Télécharger Chrome
|
||||
@@ -2437,11 +2438,11 @@ fr_CA:
|
||||
description: Description
|
||||
resolve: Résoudre
|
||||
exchange_products:
|
||||
load_more_products: "Voir plus de produits"
|
||||
load_all_products: "Voir tous les produits"
|
||||
select_all_products: "Sélectionner tous les %{total_number_of_products} produits"
|
||||
products_loaded: "%{num_of_products_loaded}sur %{total_number_of_products}produits affichés"
|
||||
loading_products: "Produits en cours de chargement..."
|
||||
load_more_variants: "Afficher plus de variantes"
|
||||
load_all_variants: "Afficher toutes les variantes"
|
||||
select_all_variants: "Sélectionnez toutes les%{total_number_of_variants}variantes"
|
||||
variants_loaded: "%{num_of_variants_loaded}sur%{total_number_of_variants}variantes"
|
||||
loading_variants: "Chargement des variantes"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Les méthodes de livraison taggées"
|
||||
shipping_method_tagged_bottom: "sont:"
|
||||
@@ -2601,6 +2602,79 @@ fr_CA:
|
||||
signup_or_login: "Commencez par vous inscrire (ou vous connecter)"
|
||||
have_an_account: "Déjà inscrit?"
|
||||
action_login: "Se connecter."
|
||||
inflections:
|
||||
each:
|
||||
one: "chacun"
|
||||
other: "chacun"
|
||||
bunch:
|
||||
one: "bouquet"
|
||||
other: "bouquets"
|
||||
pack:
|
||||
one: "caisse"
|
||||
other: "caisses"
|
||||
box:
|
||||
one: "boîte"
|
||||
other: "boîtes"
|
||||
bottle:
|
||||
one: "bouteille"
|
||||
other: "bouteilles"
|
||||
jar:
|
||||
one: "bocal"
|
||||
other: "bocaux"
|
||||
head:
|
||||
one: "tête"
|
||||
other: "têtes"
|
||||
bag:
|
||||
one: "sac"
|
||||
other: "sacs"
|
||||
loaf:
|
||||
one: "miche"
|
||||
other: "miches"
|
||||
single:
|
||||
one: "unité"
|
||||
other: "unités"
|
||||
tub:
|
||||
one: "bac"
|
||||
other: "bacs"
|
||||
punnet:
|
||||
one: "barquette"
|
||||
other: "barquettes"
|
||||
packet:
|
||||
one: "paquets"
|
||||
other: "paquets"
|
||||
item:
|
||||
one: "article"
|
||||
other: "articles"
|
||||
dozen:
|
||||
one: "dizaine"
|
||||
other: "dizaines"
|
||||
unit:
|
||||
one: "unité"
|
||||
other: "unités"
|
||||
serve:
|
||||
one: "service"
|
||||
other: "services"
|
||||
tray:
|
||||
one: "plateau"
|
||||
other: "plateaux"
|
||||
piece:
|
||||
one: "pièce"
|
||||
other: "pièces"
|
||||
pot:
|
||||
one: "pots"
|
||||
other: "pots"
|
||||
bundle:
|
||||
one: "botte"
|
||||
other: "bottes"
|
||||
flask:
|
||||
one: "flacons"
|
||||
other: "flacon"
|
||||
basket:
|
||||
one: "panier"
|
||||
other: "paniers"
|
||||
sack:
|
||||
one: "sachet"
|
||||
other: "sachets"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Commencez par créer votre profil entreprise, c'est gratuit, et changez de formule quand vous êtes prêt !"
|
||||
@@ -2843,6 +2917,8 @@ fr_CA:
|
||||
zipcode: Code postal
|
||||
weight: Poids (au kg)
|
||||
error_user_destroy_with_orders: "Les utilisateurs avec des commandes finalisées pourraient ne pas être supprimés"
|
||||
cannot_create_payment_without_payment_methods: "Vous ne pouvez pas ajouter un paiement pour une commande sans avoir défini de méthode de paiement au préalable."
|
||||
please_define_payment_methods: "Il faut que vous définissiez une méthode de paiement avant tout !"
|
||||
options: "Options"
|
||||
actions:
|
||||
update: "Mettre à jour"
|
||||
|
||||
@@ -1282,6 +1282,7 @@ nb:
|
||||
saving_credit_card: Lagrer kredittkort ...
|
||||
card_has_been_removed: "Ditt kort er fjernet (nummer: %{number})"
|
||||
card_could_not_be_removed: Beklager, kortet kunne ikke fjernes
|
||||
invalid_credit_card: "Ugyldig kort"
|
||||
ie_warning_headline: "Din nettleser er for gammel :-("
|
||||
ie_warning_text: "For den beste opplevelsen med Open Food Network anbefaler vi på det sterkeste å oppgradere nettleseren din:"
|
||||
ie_warning_chrome: Last ned Chrome
|
||||
@@ -2425,11 +2426,11 @@ nb:
|
||||
description: Beskrivelse
|
||||
resolve: Løse
|
||||
exchange_products:
|
||||
load_more_products: "Last inn flere produkter"
|
||||
load_all_products: "Last inn alle produkter"
|
||||
select_all_products: "Velg alle %{total_number_of_products} produkter"
|
||||
products_loaded: "%{num_of_products_loaded} av %{total_number_of_products} produkter lastet"
|
||||
loading_products: "Laster inn produkter"
|
||||
load_more_variants: "Last inn flere varianter"
|
||||
load_all_variants: "Last inn alle varianter"
|
||||
select_all_variants: "Velg alle %{total_number_of_variants} varianter"
|
||||
variants_loaded: "%{num_of_variants_loaded} av %{total_number_of_variants} Varianter lastet"
|
||||
loading_variants: "Laster varianter"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Leveringsmetoder merket"
|
||||
shipping_method_tagged_bottom: "er:"
|
||||
@@ -2587,6 +2588,79 @@ nb:
|
||||
signup_or_login: "Kom i gang ved å registrere deg (eller logge inn)"
|
||||
have_an_account: "Har du allerede en konto?"
|
||||
action_login: "Logg inn nå."
|
||||
inflections:
|
||||
each:
|
||||
one: "Hver"
|
||||
other: "hver"
|
||||
bunch:
|
||||
one: "bunke"
|
||||
other: "bunker"
|
||||
pack:
|
||||
one: "pakke"
|
||||
other: "pakker"
|
||||
box:
|
||||
one: "eske"
|
||||
other: "esker"
|
||||
bottle:
|
||||
one: "flaske"
|
||||
other: "flasker"
|
||||
jar:
|
||||
one: "krukke"
|
||||
other: "krukker"
|
||||
head:
|
||||
one: "hode"
|
||||
other: "hoder"
|
||||
bag:
|
||||
one: "pose"
|
||||
other: "poser"
|
||||
loaf:
|
||||
one: "skive"
|
||||
other: "skiver"
|
||||
single:
|
||||
one: "enkelt"
|
||||
other: "enkle"
|
||||
tub:
|
||||
one: "kar"
|
||||
other: "kar"
|
||||
punnet:
|
||||
one: "eske"
|
||||
other: "esker"
|
||||
packet:
|
||||
one: "pakke"
|
||||
other: "pakker"
|
||||
item:
|
||||
one: "stk"
|
||||
other: "stk"
|
||||
dozen:
|
||||
one: "dusin"
|
||||
other: "dusin"
|
||||
unit:
|
||||
one: "enhet"
|
||||
other: "enheter"
|
||||
serve:
|
||||
one: "porsjon"
|
||||
other: "porsjoner"
|
||||
tray:
|
||||
one: "brett"
|
||||
other: "brett"
|
||||
piece:
|
||||
one: "stykke"
|
||||
other: "stykker"
|
||||
pot:
|
||||
one: "gryte"
|
||||
other: "gryter"
|
||||
bundle:
|
||||
one: "bunt"
|
||||
other: "bunter"
|
||||
flask:
|
||||
one: "kolbe"
|
||||
other: "kolber"
|
||||
basket:
|
||||
one: "kurv"
|
||||
other: "kurver"
|
||||
sack:
|
||||
one: "sekk"
|
||||
other: "sekker"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Start med en gratis profil, og utvid når du er klar!"
|
||||
|
||||
@@ -702,6 +702,10 @@ pt_BR:
|
||||
enable_subscriptions_false: "Desativado"
|
||||
enable_subscriptions_true: "ativado"
|
||||
shopfront_message: "Mensagem da vitrine da loja"
|
||||
shopfront_message_placeholder: >
|
||||
Uma mensagem opcional para dar as boas-vindas aos clientes e explicar
|
||||
como comprar com você. Se o texto for inserido aqui, ele será exibido
|
||||
em uma guia inicial quando os clientes chegarem à sua loja.
|
||||
shopfront_message_link_tooltip: "Inserir / editar link"
|
||||
shopfront_message_link_prompt: "Digite um URL para inserir"
|
||||
shopfront_closed_message: "Mensagem de loja fechada"
|
||||
@@ -1106,6 +1110,7 @@ pt_BR:
|
||||
already_ordered:
|
||||
cart: "Carrinho"
|
||||
message_html: "Você já possui um pedido para esta compra. Verifique o %{cart} para ver os itens já encomendados. Você também pode cancelar itens enquanto o ciclo estiver aberto."
|
||||
failed: "O checkout falhou. Informe-nos para que possamos processar seu pedido."
|
||||
shops:
|
||||
hubs:
|
||||
show_closed_shops: "Mostrar lojas fechadas"
|
||||
@@ -1276,6 +1281,7 @@ pt_BR:
|
||||
saving_credit_card: Salvando cartão de crédito...
|
||||
card_has_been_removed: "O seu cartão foi removido (número: %{number})"
|
||||
card_could_not_be_removed: Desculpe, o cartão não pode ser removido
|
||||
invalid_credit_card: "Cartão de crédito inválido"
|
||||
ie_warning_headline: "Seu navegador está desatualizado :("
|
||||
ie_warning_text: "Para a melhor experiência na Open Food Brasil, recomendamos que você atualize seu navegador:"
|
||||
ie_warning_chrome: Baixar Chrome
|
||||
@@ -1936,6 +1942,7 @@ pt_BR:
|
||||
tax_category: "Categoria de taxa"
|
||||
calculator: "Calculadora"
|
||||
calculator_values: "Valores da calculadora"
|
||||
calculator_settings_warning: "Se você estiver alterando o tipo de calculadora, salve primeiro antes de poder editar as configurações da calculadora."
|
||||
flat_percent_per_item: "Percentual (por unidade)"
|
||||
flat_rate_per_item: "Taxa fixa (por item)"
|
||||
flat_rate_per_order: "Taxa fixa ( por pedido)"
|
||||
@@ -2423,11 +2430,11 @@ pt_BR:
|
||||
description: Descrição
|
||||
resolve: Resolver
|
||||
exchange_products:
|
||||
load_more_products: "Carregar Mais Produtos"
|
||||
load_all_products: "Carregar Todos os Produtos"
|
||||
select_all_products: "Selecionar %{total_number_of_products}Produto(s)"
|
||||
products_loaded: "%{num_of_products_loaded} de %{total_number_of_products}Produtos Carregados"
|
||||
loading_products: "Carregando Produtos"
|
||||
load_more_variants: "Carregar mais variantes"
|
||||
load_all_variants: "Carregar todas as variantes"
|
||||
select_all_variants: "Selecionar todas as %{total_number_of_variants} variantes"
|
||||
variants_loaded: "%{num_of_variants_loaded} de %{total_number_of_variants} Variantes carregadas"
|
||||
loading_variants: "Carregando variantes"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Métodos de envio selecionados"
|
||||
shipping_method_tagged_bottom: "são:"
|
||||
@@ -2828,6 +2835,8 @@ pt_BR:
|
||||
zipcode: CEP
|
||||
weight: Peso (por kg)
|
||||
error_user_destroy_with_orders: "Usuários com pedidos concluídos não podem ser excluídos"
|
||||
cannot_create_payment_without_payment_methods: "Você não pode criar um pagamento para um pedido sem métodos de pagamento definidos."
|
||||
please_define_payment_methods: "Defina primeiro algum método de pagamento."
|
||||
options: "Opções"
|
||||
actions:
|
||||
update: "Atualizar"
|
||||
|
||||
@@ -176,7 +176,7 @@ tr:
|
||||
title: Açık Gıda Ağı
|
||||
welcome_to: '''na Hoşgeldiniz'
|
||||
site_meta_description: "Açık Gıda Ağı, farklı ülkelerdeki temiz gıda üreticileri ve yazılımcılar tarafından yeni bir gıda sistemi oluşturmak üzere tasarlandı. Üretici ve türeticilerin bir araya gelerek aracısız bir gıda düzeni ile her açıdan daha sağlıklı bir toplum yaratmaları için çözümler sunar. Toplum yararına çalışır ve tamamen şeffaftır."
|
||||
search_by_name: İsme veya bölgeye göre arama yapın...
|
||||
search_by_name: İsim veya konuma göre arama yapın...
|
||||
producers_join: Yerel ve temiz üreticiler şimdi Açık Gıda Ağı'na katılabilirler.
|
||||
charges_sales_tax: KDV Uyguluyor mu?
|
||||
print_invoice: "Faturayı yazdır"
|
||||
@@ -381,7 +381,7 @@ tr:
|
||||
search_by_email: "E-posta / kod ile arama ..."
|
||||
guest_label: 'Misafir Ödemesi'
|
||||
destroy:
|
||||
has_associated_orders: 'Silme başarısız oldu: müşterinin ilişkili siparişleri var'
|
||||
has_associated_orders: 'Silme başarısız oldu: müşterinin bağlantılı siparişleri var'
|
||||
contents:
|
||||
edit:
|
||||
title: İçerik
|
||||
@@ -401,8 +401,8 @@ tr:
|
||||
fee_type: "Ücret Türü"
|
||||
name: "Ad"
|
||||
tax_category: "Vergi Tipi"
|
||||
calculator: "Hesaplayıcı"
|
||||
calculator_values: "Hesaplayıcı Değerleri"
|
||||
calculator: "Hesaplama"
|
||||
calculator_values: "Hesaplama Değerleri"
|
||||
search: "Arama"
|
||||
name_placeholder: "örn. paketleme ücreti"
|
||||
enterprise_groups:
|
||||
@@ -420,7 +420,7 @@ tr:
|
||||
display_as: Gösterme Şekli
|
||||
category: Kategori
|
||||
tax_category: Vergi Kategorisi
|
||||
inherits_properties?: Özellikler kopyalanıyor mu?
|
||||
inherits_properties?: Özellikler aktarılıyor mu?
|
||||
available_on: Mevcut Olma Tarihi
|
||||
av_on: "Mevcut Olma Tarihi"
|
||||
import_date: Aktarıldı
|
||||
@@ -433,7 +433,7 @@ tr:
|
||||
search: "Ara"
|
||||
properties:
|
||||
property_name: "Özellik Adı"
|
||||
inherited_property: "Kopyalanan Özellik"
|
||||
inherited_property: "Aktarılan Özellik"
|
||||
variants:
|
||||
infinity: "Sonsuz"
|
||||
to_order_tip: "Sipariş üzerine yapılan ürünlerin, belirlenmiş stok seviyeleri yoktur."
|
||||
@@ -514,10 +514,10 @@ tr:
|
||||
entries_with_errors: Öğeler hata içeriyor ve içe aktarılmayacak
|
||||
products_to_create: Ürünler oluşturulacak
|
||||
products_to_update: Ürünler güncellenecek
|
||||
inventory_to_create: Stok kalemleri oluşturulacak
|
||||
inventory_to_update: Stok kalemleri güncellenecek
|
||||
inventory_to_create: Stok ürünleri oluşturulacak
|
||||
inventory_to_update: Stok ürünleri güncellenecek
|
||||
products_to_reset: Mevcut ürünlerin stokları sıfırlanacak
|
||||
inventory_to_reset: Mevcut stok kalemleri sıfırlanacak
|
||||
inventory_to_reset: Mevcut ürünlerinin stok seviyeleri sıfırlanacak
|
||||
line: Satır
|
||||
item_line: Öğe satırı
|
||||
import_review:
|
||||
@@ -529,10 +529,10 @@ tr:
|
||||
final_results: Sonuçları içe aktarın
|
||||
products_created: Oluşturulan ürünler
|
||||
products_updated: Güncellenen ürünler
|
||||
inventory_created: Stok kalemleri oluşturuldu
|
||||
inventory_updated: Stok kalemleri güncellendi
|
||||
inventory_created: Stok ürünleri oluşturuldu
|
||||
inventory_updated: Stok ürünleri güncellendi
|
||||
products_reset: Ürünlerin stok seviyeleri sıfırlandı
|
||||
inventory_reset: Stok ürünlerinin seviyesi sıfırlandı
|
||||
inventory_reset: Ürünlerin stok seviyeleri sıfırlandı
|
||||
all_saved: "Tüm ürünler başarıyla kaydedildi"
|
||||
some_saved: "Ürünler başarıyla kaydedildi"
|
||||
save_errors: Yükleme Hatası
|
||||
@@ -547,7 +547,7 @@ tr:
|
||||
description: İşletmelerinizin stoklarını yönetmek için bu sayfayı kullanın. Burada yapılan değişiklikler 'Ürünler' sayfasındaki ayarları da günceller.
|
||||
enable_reset?: Stok Sıfırlama etkinleştirilsin mi?
|
||||
default_stock: "Varsayılan stok"
|
||||
inherit?: Kopyala?
|
||||
inherit?: Aktar?
|
||||
add: Ekle
|
||||
hide: Sakla
|
||||
import_date: Aktarıldı
|
||||
@@ -560,7 +560,7 @@ tr:
|
||||
no_matching_hidden_products: Arama kriterlerinize uyan gizlenmiş ürün yok
|
||||
no_new_products: Stoklara eklenecek yeni ürün yok
|
||||
no_matching_new_products: Arama kriterlerinize uyan yeni ürün yok
|
||||
inventory_powertip: Burası sizin ürün envanteriniz. Ürün eklemek için menüdeki 'Yeni Ürün' butonun tıklayın.
|
||||
inventory_powertip: Burası sizin ürün envanteriniz, stok takip merkeziniz. Ürün eklemek için menüdeki 'Yeni Ürün' butonun tıklayın.
|
||||
hidden_powertip: Bu ürünler stoklarınızda gizlendi ve tezgahlarınızda görünür olmayacak. Stoklarınıza ürün eklemek için 'Ekle' butonuna tıklayabilirsiniz.
|
||||
new_powertip: Bu ürünler stoklarınıza eklenmeye hazır. Stoğunuza ürün eklemek için 'Ekle'yi veya tezgahınızda gizlemek için 'Gizle'yi tıklayın. İstediğiniz zaman fikrinizi değiştirebilirsiniz!
|
||||
controls:
|
||||
@@ -609,7 +609,7 @@ tr:
|
||||
abn: VKN/TCKN
|
||||
abn_placeholder: Örn. 12345678990
|
||||
acn: Tic. Sicil No.
|
||||
acn_placeholder: Örneğin. 530 123 45 67
|
||||
acn_placeholder: Örn. 0530 123 45 67
|
||||
display_invoice_logo: Faturalarda logoyu göster
|
||||
invoice_text: Faturaların sonuna özelleştirilmiş metin ekle
|
||||
contact:
|
||||
@@ -636,14 +636,14 @@ tr:
|
||||
promo_image_note3: Kapak resmi, bir işletmenin profil sayfasının üstünde görüntülenir.
|
||||
inventory_settings:
|
||||
text1: Stok seviyelerini ve fiyatları şuradan yönetebilirsiniz
|
||||
inventory: Stoklar
|
||||
inventory: Stok
|
||||
text2: >
|
||||
Stok sistemini kullanıyorsanız, tedarikçileriniz yeni bir ürün eklediğinde,
|
||||
ürünün satış listenize eklenmeden önce Stok'larınıza eklenip eklenmemesi
|
||||
ürünün satış listenize eklenmeden önce Stok listenize eklenip eklenmemesi
|
||||
gerektiğini seçebilirsiniz. Eğer ürünlerinizi yönetmek için Stok sistemini
|
||||
kullanmıyorsanız 'tavsiye edilen' seçenek ile devam etmeniz gerekir.
|
||||
kullanmıyorsanız 'tavsiye edilen' seçeneği ile devam etmeniz gerekir.
|
||||
preferred_product_selection_from_inventory_only_yes: Tezgahınıza yeni ürünler eklenebilir (önerilir)
|
||||
preferred_product_selection_from_inventory_only_no: Yeni ürünler tezgahınıza eklemeden önce stoklara girilmelidir
|
||||
preferred_product_selection_from_inventory_only_no: Yeni ürünler tezgahınıza eklemeden önce Stok listesine girilmelidir
|
||||
payment_methods:
|
||||
name: Ad
|
||||
applies: Uygulanma?
|
||||
@@ -700,7 +700,7 @@ tr:
|
||||
enable_subscriptions_tip: "Üyelik işlevselliği etkinleştirilsin mi?"
|
||||
enable_subscriptions_false: "Kapalı"
|
||||
enable_subscriptions_true: "Etkin"
|
||||
shopfront_message: "Mesajınız"
|
||||
shopfront_message: "Tezgah Mesajınız"
|
||||
shopfront_message_placeholder: >
|
||||
Müşterilerinize merhaba diyebilir, tezgahınız ve alışveriş şartlarınız
|
||||
ile ilgili bilgi verebilirsiniz. Yazdıklarınız, müşteriler tezgahınızı
|
||||
@@ -793,7 +793,7 @@ tr:
|
||||
profile_description_text: İnsanlar Açık Gıda Ağı üzerinden sizi bulabilir ve sizinle iletişim kurabilir. İşletmeniz haritada ve listelerde görünür olacak.
|
||||
hub_shop: Türetici Pazarı
|
||||
hub_shop_text: Başkalarının ürünlerini satın
|
||||
hub_shop_description_text: İşletmeniz yerel gıda sisteminizin belkemiğidir. Diğer işletmelerin ürünlerini bir araya getirebilir, Açık Gıda Ağı'na kayıtlı tezgahınız üzerinden alıcılara ulaştırabilirsiniz.
|
||||
hub_shop_description_text: İşletmeniz yerel gıda sisteminizin belkemiğidir. Diğer işletmelerin ürünlerini bir araya getirebilir, Açık Gıda Ağı'na kayıtlı pazar yeriniz üzerinden alıcılara ulaştırabilirsiniz.
|
||||
choose_option: Lütfen yukarıdaki seçeneklerden birini seçin.
|
||||
change_now: Değiştir
|
||||
enterprise_user_index:
|
||||
@@ -882,13 +882,13 @@ tr:
|
||||
advanced_settings:
|
||||
title: Gelişmiş Ayarlar
|
||||
choose_product_tip: Gelen ve giden ürünleri sadece stokların %{inventory} 'i ile kısıtlayabilirsiniz.
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Yalnızca Yönetici Envanteri
|
||||
preferred_product_selection_from_coordinator_inventory_only_here: Yalnızca Koordinatör Stokları
|
||||
preferred_product_selection_from_coordinator_inventory_only_all: Tüm Mevcut Ürünler
|
||||
save_reload: Sayfayı Kaydet ve Yeniden Yükle
|
||||
coordinator_fees:
|
||||
add: Yönetici ücreti ekle
|
||||
add: Koordinatör ücreti ekle
|
||||
filters:
|
||||
search_by_order_cycle_name: "Sipariş Dönemi adına göre ara ..."
|
||||
search_by_order_cycle_name: "Sipariş Dönemi adına göre arayın ..."
|
||||
involving: "İçeriyor"
|
||||
any_enterprise: "Herhangi Bir İşletme"
|
||||
any_schedule: "Herhangi Bir Takvim"
|
||||
@@ -911,7 +911,7 @@ tr:
|
||||
name_and_timing_form:
|
||||
name: ad
|
||||
orders_open: 'Siparişler şu zamanda açık:'
|
||||
coordinator: yönetici
|
||||
coordinator: Koordinatör
|
||||
orders_close: Siparişler kapalı
|
||||
row:
|
||||
suppliers: tedarikçileri
|
||||
@@ -989,7 +989,7 @@ tr:
|
||||
customers:
|
||||
name: Müşteriler
|
||||
products_and_inventory:
|
||||
name: Ürünler ve Stoklar
|
||||
name: Ürünler ve Stok
|
||||
users_and_enterprises:
|
||||
name: Kullanıcılar ve İşletmeler
|
||||
description: 'İşletme Hesabı Yönetimi '
|
||||
@@ -1021,7 +1021,7 @@ tr:
|
||||
just_a_few_more_steps: 'Başlamadan önce birkaç adım kaldı:'
|
||||
enable_subscriptions: "Tezgahlarınızdan/pazarlarınızdan en az biri için üyelikleri etkinleştirin"
|
||||
enable_subscriptions_step_1_html: 1. %{enterprises_link} sayfasına gidin, tezgahınızı bulun ve ‘Yönet’i tıklayın
|
||||
enable_subscriptions_step_2: '''Vitrin Tercihleri'' altındaki Üyelikler seçeneğini etkinleştirin'
|
||||
enable_subscriptions_step_2: '''Tezgah Tercihleri'' altındaki Üyelikler seçeneğini etkinleştirin'
|
||||
set_up_shipping_and_payment_methods_html: '%{shipping_link} ve %{payment_link} yöntemlerini ayarlayın'
|
||||
set_up_shipping_and_payment_methods_note_html: Yalnızca Nakit ve Şerit ödeme yöntemlerinin <br />'ü üyeliklerle kullanılabilir
|
||||
ensure_at_least_one_customer_html: En az bir %{customer_link} bulunduğundan emin olun
|
||||
@@ -1281,6 +1281,7 @@ tr:
|
||||
saving_credit_card: Kredi kartı kaydediliyor ...
|
||||
card_has_been_removed: "Kartınız kaldırıldı (sayı: %{number})"
|
||||
card_could_not_be_removed: Maalesef kart kaldırılamadı
|
||||
invalid_credit_card: "Geçersiz kredi kartı"
|
||||
ie_warning_headline: "Tarayıcınız güncel değil :-("
|
||||
ie_warning_text: "En iyi Açık Gıda Ağı deneyimi için tarayıcınızı güncellemenizi önemle öneririz:"
|
||||
ie_warning_chrome: Chrome'u indirin
|
||||
@@ -1293,13 +1294,13 @@ tr:
|
||||
desc_part_1: "Çerezler, bazı web sitelerini ziyaret ettiğinizde bilgisayarınızda depolanan çok küçük metin dosyalarıdır."
|
||||
desc_part_2: "AGA'da gizliliğinize tamamen saygılıyız. Yalnızca size gıda satma/satın alma hizmetini sunmak için gerekli olan çerezleri kullanıyoruz. Verilerinizin hiçbirini satmıyoruz. Gelecekte, ekosistem için yararlı olabilecek yeni müşterek hizmetleri oluşturmak için bazı verilerinizi paylaşmanızı önerebiliriz (yerel gıda sistemleri için lojistik hizmetler gibi) ama henüz o seviyede değiliz ve bunu zaten sizin izniniz olmadan yapmayacağız :-)"
|
||||
desc_part_3: "Platforma 'Giriş' yaptığınızda kim olduğunuzu hatırlamak veya giriş yapmamış olsanız bile sepetinize koyduğunuz ürünleri hatırlayabilmek için çerezleri kullanırız. “Çerezleri kabul et” butonuna tuşlamadan gezinmeye devam ederseniz, web sitesinin çalışması için gerekli olan çerezleri saklamak için bize izin verdiğinizi varsayıyoruz. İşte kullandığımız çerezlerin listesi!"
|
||||
essential_cookies: "Temel Çerezler"
|
||||
essential_cookies: "Kullanılması Zorunlu Olan Çerezler"
|
||||
essential_cookies_desc: "Web sitemizin çalışması için aşağıdaki çerezler kesinlikle gereklidir."
|
||||
essential_cookies_note: "Çerezlerin çoğu yalnızca benzersiz bir tanımlayıcı içerir, ancak başka hiçbir veri içermez, bu nedenle örneğin e-posta adresiniz ve şifreniz hiçbir zaman bunlarda bulunmaz ve hiçbir zaman açıklanmaz."
|
||||
cookie_domain: "Olarak ayarla:"
|
||||
cookie_session_desc: "Web sitesinin sayfa ziyaretleri arasındaki kullanıcıları hatırlamasına, örneğin sepetinizdeki öğeleri hatırlamasına izin vermek için kullanılır."
|
||||
cookie_consent_desc: "Çerezleri depolamak için kullanıcı onayının durumunu korumak amacıyla kullanılır"
|
||||
cookie_remember_me_desc: "Kullanıcı web sitesinden kendisini hatırlamasını isterse kullanılır. Bu çerez 12 gün sonra otomatik olarak silinir. Kullanıcı olarak bu çerezin silinmesini istiyorsanız, yalnızca çıkış yapmanız gerekir. Bu çerezin bilgisayarınıza yüklenmesini istemiyorsanız, giriş yaparken “beni hatırla” onay kutusunu işaretlememelisiniz."
|
||||
cookie_remember_me_desc: "Kullanıcı web sitesinden kendisini hatırlamasını isterse kullanılır. Bu çerez 12 gün sonra otomatik olarak silinir. Kullanıcı olarak bu çerezin silinmesini istiyorsanız, hesabınızdan çıkış yapmanız yeterli. Bu çerezin bilgisayarınıza yüklenmesini istemiyorsanız, giriş yaparken “beni hatırla” onay kutusunu işaretlememelisiniz."
|
||||
cookie_openstreemap_desc: "Sevecen açık kaynak harita sağlayıcımız (OpenStreetMap) tarafından, belirli bir süre içinde çok fazla istek almamasını ve hizmetlerinin kötüye kullanılmasını önlemek için kullanılır."
|
||||
cookie_stripe_desc: "Sahtekarlık tespiti için ödeme işlemcimiz Stripe tarafından toplanan veriler https://stripe.com/cookies-policy/legal. Tüm mağazalar Stripe'ı ödeme yöntemi olarak kullanmaz, ancak dolandırıcılığın tüm sayfalara uygulanmasını önlemek iyi bir yöntemdir. Stripe muhtemelen sayfalarımızdan hangilerinin genellikle API'leriyle etkileşime girdiğini gösteren bir resim oluşturur ve daha sonra olağandışı bir şeyi işaretler. Dolayısıyla, Stripe çerezinin ayarlanması, kullanıcıya ödeme yönteminin sağlanmasından daha geniş bir işleve sahiptir. Kaldırılması hizmetin güvenliğini etkileyebilir. Stripe hakkında daha fazla bilgi edinebilir ve gizlilik politikasını https://stripe.com/privacy adresinde okuyabilirsiniz."
|
||||
statistics_cookies: "İstatistik Çerezleri"
|
||||
@@ -1323,13 +1324,13 @@ tr:
|
||||
disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/en-ww/cookies/"
|
||||
disabling_cookies_note: "Ancak, Açık Gıda Ağı tarafından kullanılan temel çerezleri silerseniz veya değiştirirseniz, web sitesinin çalışmadığını, örneğin ödeme yapmak için sepetinize hiçbir şey ekleyemeyeceğinizi unutmayın."
|
||||
cookies_banner:
|
||||
cookies_usage: "Bu site, gezinmenizi sürtünmesiz ve güvenli hale getirmek ve sunduğumuz özellikleri iyileştirmek için nasıl kullandığınızı anlamamıza yardımcı olmak için çerezleri kullanır."
|
||||
cookies_usage: "Bu site, gezinmenizi sorunsuz ve güvenli hale getirmek ve sunduğumuz özellikleri iyileştirmek için nasıl kullandığınızı anlamamıza yardımcı olmak için çerezleri kullanır."
|
||||
cookies_definition: "Çerezler, bazı web sitelerini ziyaret ettiğinizde bilgisayarınızda depolanan çok küçük metin dosyalarıdır."
|
||||
cookies_desc: "Yalnızca size çevrimiçi yiyecek satma / satın alma hizmetini sunmak için gerekli olan çerezleri kullanıyoruz. Verilerinizin hiçbirini satmıyoruz. Hizmete giriş yaptığınızda kim olduğunuzu hatırlamak veya giriş yapmamış olsanız bile sepetinize koyduğunuz öğeleri hatırlayabilmek için çerezleri kullanırız. Tıklamadan web sitesinde gezinmeye devam ederseniz “Çerezleri kabul et”, web sitesinin çalışması için gerekli olan çerezleri saklamak için bize izin verdiğinizi varsayıyoruz."
|
||||
cookies_policy_link_desc: "Daha fazla bilgi edinmek istiyorsanız,"
|
||||
cookies_policy_link: "çerezler politikası"
|
||||
cookies_accept_button: "Çerezleri kabul et"
|
||||
home_shop: Şimdi alışveriş yap
|
||||
home_shop: Şimdi Alışveriş Yap
|
||||
brandstory_headline: "Bağımsız, adil ve temiz gıda ..."
|
||||
brandstory_intro: "Bazen sistemi düzeltmenin en iyi yolu yeni bir sistem yaratmaktır…"
|
||||
brandstory_part1: "Açık Gıda Ağı, farklı ülkelerdeki temiz gıda üreticileri ve yazılımcılar tarafından yeni bir gıda sistemi oluşturmak üzere tasarlandı. Üretici ve türeticilerin bir araya gelerek aracısız bir gıda düzeni ile her açıdan daha sağlıklı bir toplum yaratmaları için çözümler sunar. Toplum yararına çalışır ve tamamen şeffaftır."
|
||||
@@ -1396,7 +1397,7 @@ tr:
|
||||
order_includes_tax: (vergi dahil)
|
||||
order_payment_paypal_successful: PayPal ile ödemeniz başarıyla işlendi.
|
||||
order_hub_info: Pazar Bilgisi
|
||||
order_back_to_store: Alışverişe Geri Dön
|
||||
order_back_to_store: Siteye Geri Dön
|
||||
order_back_to_cart: Sepete geri dön
|
||||
bom_tip: "Birden çok siparişteki ürün miktarlarını değiştirmek için bu sayfayı kullanın. Ürünler gerektiğinde tüm siparişlerden tamamen kaldırılabilir."
|
||||
unsaved_changes_warning: "Kaydedilmemiş değişiklikler var ve devam ederseniz kaybolacak."
|
||||
@@ -1496,7 +1497,7 @@ tr:
|
||||
enterprises_choose: "Siparişinizi ne zaman istediğinizi seçin:"
|
||||
maps_open: "Açık"
|
||||
maps_closed: "Kapalı"
|
||||
hubs_buy: "Alışveriş ürünleri:"
|
||||
hubs_buy: "Neler Bulabilirsiniz:"
|
||||
hubs_shopping_here: "Alışveriş noktası"
|
||||
hubs_orders_closed: "Siparişler kapalı"
|
||||
hubs_profile_only: "Yalnızca profil"
|
||||
@@ -1532,7 +1533,7 @@ tr:
|
||||
products_update_error_data: "Geçersiz veriler nedeniyle kaydetme başarısız oldu:"
|
||||
products_changes_saved: "Değişiklikler kaydedildi."
|
||||
search_no_results_html: "Üzgünüz, %{query} için sonuç bulunamadı. Başka bir arama yapmak ister misiniz?"
|
||||
components_profiles_popover: "Açık Gıda Ağında bir tezgahı olmayan ancak başka bir sitede kendi satış siteleri olan hesaplar"
|
||||
components_profiles_popover: "Açık Gıda Ağında bir vitrini olmayan ancak başka bir sitede kendi satış siteleri olan hesaplar"
|
||||
components_profiles_show: "Profilleri göster"
|
||||
components_filters_nofilters: "Filtresiz"
|
||||
components_filters_clearfilters: "Tüm filtreleri temizle"
|
||||
@@ -1790,7 +1791,7 @@ tr:
|
||||
yes_producer: "Evet, üreticiyim"
|
||||
no_producer: "Hayır, üretici değilim"
|
||||
producer_field_error: "Lütfen birini seçin. Üretici misiniz?"
|
||||
yes_producer_help: "Siz de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor kurutuyor veya hazırlıyorsanız, siz de bir üreticisiniz."
|
||||
yes_producer_help: "Siz de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor kurutuyor veya hazırlıyorsanız, üreticisiniz demektir."
|
||||
no_producer_help: "Üretici değilseniz muhtemelen gıdaya ulaşım sağlayan, dağıtım veya satış yapan bir grup ya da işletmesiniz. Bir dükkan, kooperatif, gıda topluluğu, restaurant veya toptancı bile olabilirsiniz. "
|
||||
create_profile: "Profil oluştur"
|
||||
about:
|
||||
@@ -1805,9 +1806,9 @@ tr:
|
||||
enterprise_long_desc_placeholder: "Bu, işletmenizin hikayesini insanlara anlatmak için harika bir fırsat! - İnsanlara kendinizden bahsedin. Açıklamanızı 600 karakter veya 150 kelimenin altında tutmanızı öneririz."
|
||||
enterprise_long_desc_length: "%{num} karakter / 600'e kadar önerilir"
|
||||
enterprise_abn: "VKN/TCKN"
|
||||
enterprise_abn_placeholder: "Örneğin. 99123456879"
|
||||
enterprise_abn_placeholder: "Örn. 123 456 7890"
|
||||
enterprise_acn: "Tic. Sicil No."
|
||||
enterprise_acn_placeholder: "Örneğin. 123 456 789"
|
||||
enterprise_acn_placeholder: "Örn. 123 456 789"
|
||||
enterprise_tax_required: "Bir seçim yapmanız gerekiyor."
|
||||
images:
|
||||
title: "Görüntüler"
|
||||
@@ -1939,9 +1940,9 @@ tr:
|
||||
delivery_method: Teslimat Yöntemi
|
||||
fee_type: "Ücret Türü"
|
||||
tax_category: "Vergi Kategorisi"
|
||||
calculator: "Hesaplayıcı"
|
||||
calculator_values: "Hesaplayıcı Değerleri"
|
||||
calculator_settings_warning: "Hesaplayıcı türünü değiştiriyorsanız, ayarları düzenlemeden önce kaydetmeniz gerekir"
|
||||
calculator: "Hesaplama"
|
||||
calculator_values: "Hesaplama Değerleri"
|
||||
calculator_settings_warning: "Hesaplama türünü değiştiriyorsanız, ayarları düzenlemeden önce kaydetmeniz gerekir"
|
||||
flat_percent_per_item: "Sabit Yüzde (ürün başına)"
|
||||
flat_rate_per_item: "Sabit Ücret (ürün başına)"
|
||||
flat_rate_per_order: "Sabit Ücret (sipariş Başına) "
|
||||
@@ -2371,7 +2372,7 @@ tr:
|
||||
gerek yoktur.
|
||||
profile_only_text3: >
|
||||
Ürünlerinizi Açık Gıda Ağı'na ekleyin. Böylece üretici & türetici pazarları
|
||||
gibi diğer hesaplar ürünlerinizi kendi stoklarına ekleyip satışa sunabilsinler.
|
||||
gibi diğer hesaplar ürünlerinizi kendi listelerine ekleyip satışa sunabilsinler.
|
||||
producer_shop: Üretici Tezgahı
|
||||
producer_shop_text1: >
|
||||
Açık Gıda Ağı üzerindeki tezgahınız aracılığıyla ürünlerinizi alıcılara
|
||||
@@ -2401,10 +2402,9 @@ tr:
|
||||
enterprise_producer:
|
||||
producer: Üretici
|
||||
producer_text1: >
|
||||
Dürüst ve bilinçli üreticiler, insanlara sağlıklı ve lezzetli yiyecek
|
||||
ve içecekler sağlar. Siz de tamamen doğal yollarla bir şeyler yetiştiriyor,
|
||||
büyütüyor, pişiriyor, sağıyor veya mayalıyorsanız, bu üreticilerden
|
||||
birisiniz demektir.
|
||||
Dürüst ve bilinçli üreticiler, insanlara sağlıklı gıdalar sağlar. Siz
|
||||
de birşeyler yetiştiriyor, büyütüyor, sağıyor, hasat ediyor, pişiriyor
|
||||
kurutuyor veya hazırlıyorsanız, üreticisiniz demektir.
|
||||
producer_text2: >
|
||||
Üreticiler sistem üzerinde farklı şekillerde aktif olarak da hem kendilerine
|
||||
hem de diğer işletmelere daha faydalı olabilirler. Çevrelerindeki üreticilerin
|
||||
@@ -2421,18 +2421,18 @@ tr:
|
||||
producer_desc: Gıda üreticileri
|
||||
producer_example: 'Örn: ÇİFTÇİLER, FIRINLAR, ÜRETİM KOOPERATİFLERİ vs.'
|
||||
non_producer_desc: Diğer tüm gıda işletmeleri
|
||||
non_producer_example: 'Örn: Dükkanlar, Gıda Kooperatifleri, Gıda Toplulukları vs.'
|
||||
non_producer_example: 'Örn: Manavlar, Gıda Kooperatifleri, Gıda Toplulukları vs.'
|
||||
enterprise_status:
|
||||
status_title: "%{name} kuruldu ve başlamaya hazır!"
|
||||
severity: şiddet
|
||||
severity: Şiddet
|
||||
description: Açıklama
|
||||
resolve: çözmek
|
||||
resolve: Çözüm
|
||||
exchange_products:
|
||||
load_more_products: "Daha fazla ürün yükle"
|
||||
load_all_products: "Tüm Ürünleri Yükle"
|
||||
select_all_products: "Tümünü Seç %{total_number_of_products} Ürün"
|
||||
products_loaded: " %{total_number_of_products}üründen %{num_of_products_loaded} ürün yüklendi"
|
||||
loading_products: "Ürünler Yükleniyor"
|
||||
load_more_variants: "Daha Fazla Varyant Yükle"
|
||||
load_all_variants: "Tüm Varyantları Yükle"
|
||||
select_all_variants: "Tüm %{total_number_of_variants} Varyantı Seç"
|
||||
variants_loaded: "%{total_number_of_variants} Varyanttan %{num_of_variants_loaded} Tanesi Yüklendi"
|
||||
loading_variants: "Varyantlar Yükleniyor"
|
||||
tag_rules:
|
||||
shipping_method_tagged_top: "Teslimat yöntemleri etiketlendi"
|
||||
shipping_method_tagged_bottom: "şunlardır:"
|
||||
@@ -2446,7 +2446,7 @@ tr:
|
||||
select_rule_type: "Bir kural türü seçin:"
|
||||
add_rule: "Kural Ekle"
|
||||
enterprise_fees:
|
||||
inherit_from_product: "Üründen Kopyala"
|
||||
inherit_from_product: "Üründen Aktar"
|
||||
orders:
|
||||
index:
|
||||
per_page: "sayfa başına %{results}"
|
||||
@@ -2469,7 +2469,7 @@ tr:
|
||||
pending: "Bekliyor"
|
||||
resumed: "devam ettirildi"
|
||||
returned: "iade"
|
||||
skrill: "Skrill"
|
||||
skrill: "skrill"
|
||||
shipment_states:
|
||||
backorder: "bekleyen sipariş"
|
||||
partial: "kısmi"
|
||||
@@ -2505,7 +2505,7 @@ tr:
|
||||
updated_schedule: "Takvim güncellendi"
|
||||
deleted_schedule: "Takvim silindi"
|
||||
name_required_error: "Lütfen bu takvim için bir ad girin"
|
||||
no_order_cycles_error: "Lütfen en az bir sipariş döngüsü seçin (sürükle ve bırak)"
|
||||
no_order_cycles_error: "Lütfen en az bir sipariş dönemi seçin (sürükle ve bırak)"
|
||||
available: "Mevcut"
|
||||
selected: "Seçildi"
|
||||
customers:
|
||||
@@ -2517,10 +2517,10 @@ tr:
|
||||
subscriptions:
|
||||
error_saving: "Üyelik kaydedilirken hata oluştu"
|
||||
new:
|
||||
please_select_a_shop: "Lütfen bir dükkan seçin"
|
||||
please_select_a_shop: "Lütfen bir pazar seçin"
|
||||
insufficient_stock: "Yetersiz stok, sadece %{on_hand} kaldı"
|
||||
out_of_stock:
|
||||
reduced_stock_available: İndirgenmiş stok mevcut
|
||||
reduced_stock_available: Azaltılmış stok mevcut
|
||||
out_of_stock_text: >
|
||||
Siz alışveriş yaparken sepetinizdeki ürünlerden bir veya birkaç tanesinin
|
||||
stok seviyesi düşürüldü. Değişiklikler:
|
||||
@@ -2534,7 +2534,7 @@ tr:
|
||||
use_producer_settings: "Üretici stoklarını kullan"
|
||||
'yes': "Evet"
|
||||
'no': "Hayır"
|
||||
inventory_products: "Envanter Ürünleri"
|
||||
inventory_products: "Stok Ürünleri"
|
||||
hidden_products: "Gizli Ürünler"
|
||||
new_products: "Yeni ürünler"
|
||||
reset_stock_levels: Stok Seviyelerini Varsayılanlara Sıfırla
|
||||
@@ -2591,6 +2591,73 @@ tr:
|
||||
signup_or_login: "Kaydolarak Başlayın (veya giriş yapın)"
|
||||
have_an_account: "Zaten hesabınız var mı?"
|
||||
action_login: "Şimdi giriş yapın."
|
||||
inflections:
|
||||
each:
|
||||
one: "her biri"
|
||||
other: "her biri"
|
||||
bunch:
|
||||
one: "Demet"
|
||||
other: "demet"
|
||||
pack:
|
||||
one: "pack"
|
||||
other: "paket"
|
||||
box:
|
||||
one: "Kutu"
|
||||
other: "koli"
|
||||
bottle:
|
||||
one: "şişe"
|
||||
other: "şişe"
|
||||
jar:
|
||||
one: "kavanoz"
|
||||
other: "kavanoz"
|
||||
head:
|
||||
one: "kafa"
|
||||
other: "baş"
|
||||
bag:
|
||||
one: "sırt çantası"
|
||||
other: "çanta"
|
||||
loaf:
|
||||
one: "somun"
|
||||
other: "somun"
|
||||
single:
|
||||
one: "tek"
|
||||
other: "tane"
|
||||
tub:
|
||||
one: "küvet"
|
||||
other: "fıçı"
|
||||
punnet:
|
||||
one: "meyve sepeti"
|
||||
other: "meyve sepeti"
|
||||
packet:
|
||||
one: "paket"
|
||||
other: "paket"
|
||||
item:
|
||||
one: "madde"
|
||||
other: "Ürün"
|
||||
dozen:
|
||||
one: "düzine"
|
||||
other: "deste"
|
||||
unit:
|
||||
one: "birim"
|
||||
other: "birimler"
|
||||
serve:
|
||||
one: "servis"
|
||||
other: "porsiyon"
|
||||
piece:
|
||||
one: "parça"
|
||||
other: "parça"
|
||||
bundle:
|
||||
one: "demeti"
|
||||
other: "demet"
|
||||
flask:
|
||||
one: "şişe"
|
||||
other: "cep şişesi"
|
||||
basket:
|
||||
one: "sepet"
|
||||
other: "sepet"
|
||||
sack:
|
||||
one: "çuval"
|
||||
other: "çuval"
|
||||
producers:
|
||||
signup:
|
||||
start_free_profile: "Ücretsiz bir profille başlayın ve hazır olduğunuzda devam edin!"
|
||||
@@ -2608,7 +2675,7 @@ tr:
|
||||
fee_placements:
|
||||
supplier: "Gelen"
|
||||
distributor: "Giden"
|
||||
coordinator: "koordinatör"
|
||||
coordinator: "Koordinatör"
|
||||
tax_category_name:
|
||||
shipping_instance_rate: "Platform Hızı"
|
||||
formats:
|
||||
@@ -2797,7 +2864,7 @@ tr:
|
||||
description: "Açıklama"
|
||||
type: "tür"
|
||||
default: "varsayılan"
|
||||
calculator: "Hesaplayıcı"
|
||||
calculator: "Hesaplama"
|
||||
zone: "bölge"
|
||||
display: "Görüntüle"
|
||||
environment: "çevre"
|
||||
@@ -2844,7 +2911,7 @@ tr:
|
||||
layouts:
|
||||
admin:
|
||||
header:
|
||||
store: mağaza
|
||||
store: Ana Site
|
||||
admin:
|
||||
tab:
|
||||
dashboard: "Gösterge Paneli"
|
||||
@@ -2854,7 +2921,7 @@ tr:
|
||||
products: "Ürünler"
|
||||
option_types: "Seçenek Türleri"
|
||||
properties: "Özellikler"
|
||||
variant_overrides: "Envanter"
|
||||
variant_overrides: "Stok"
|
||||
reports: "Raporlar"
|
||||
configuration: "Yapılandırma"
|
||||
users: "Kullanıcılar"
|
||||
@@ -2866,7 +2933,7 @@ tr:
|
||||
groups: "Gruplar"
|
||||
product_properties:
|
||||
index:
|
||||
inherits_properties_checkbox_hint: "Özellikler i%{supplier}'den kopyalanacak mı? (yukarıda geçersiz kılınmadıkça)"
|
||||
inherits_properties_checkbox_hint: "Özellikler %{supplier}'den aktarılsın mı? (yukarıda geçersiz kılınmadıkça)"
|
||||
add_product_properties: "Ürün Özelliği Ekle"
|
||||
select_from_prototype: "Prototipten Seç"
|
||||
properties:
|
||||
@@ -2976,7 +3043,7 @@ tr:
|
||||
name: "ad"
|
||||
products_distributor: "Dağıtımcı"
|
||||
zone: "bölge"
|
||||
calculator: "Hesaplayıcı"
|
||||
calculator: "Hesaplama"
|
||||
display: "Görüntüle"
|
||||
both: "Her ikisi de"
|
||||
front_end: "ön yüz"
|
||||
@@ -3050,7 +3117,7 @@ tr:
|
||||
display_as: Gösterme Şekli
|
||||
category: Kategori
|
||||
tax_category: Vergi Kategorisi
|
||||
inherits_properties?: Özellikler kopyalanır mı?
|
||||
inherits_properties?: Özellikler aktarılıyor mu?
|
||||
available_on: Şu Tarihte Hazır
|
||||
av_on: "Şu tarihte hazır"
|
||||
import_date: "İçe Aktarım Tarihi"
|
||||
@@ -3128,37 +3195,37 @@ tr:
|
||||
general_settings:
|
||||
edit:
|
||||
legal_settings: "Yasal Ayarlar"
|
||||
cookies_consent_banner_toggle: "Ekran çerezleri onay başlığı"
|
||||
privacy_policy_url: "Gizlilik Politikası URL'si"
|
||||
cookies_consent_banner_toggle: "Çerezler onay başlığını göster"
|
||||
privacy_policy_url: "Gizlilik Politikası URLsi"
|
||||
enterprises_require_tos: "İşletmeler Hizmet Şartlarını kabul etmelidir"
|
||||
cookies_policy_matomo_section: "Çerez politikası sayfasında Matomo bölümünü görüntüle"
|
||||
cookies_policy_ga_section: "Çerez politikası sayfasında Google Analytics bölümünü görüntüle"
|
||||
footer_tos_url: "Hizmet Şartları URL'si"
|
||||
footer_tos_url: "Hizmet Şartları URLsi"
|
||||
checkout:
|
||||
payment:
|
||||
stripe:
|
||||
choose_one: Birini seç
|
||||
enter_new_card: Yeni bir kart için ayrıntıları girin
|
||||
choose_one: Birini seçin
|
||||
enter_new_card: Yeni bir kart için bilgileri girin
|
||||
used_saved_card: "Kayıtlı bir kart kullanın:"
|
||||
or_enter_new_card: "Veya yeni bir kart için ayrıntıları girin:"
|
||||
or_enter_new_card: "Veya yeni bir kart için bilgileri girin:"
|
||||
remember_this_card: Bu kartı hatırlıyor musunuz?
|
||||
date_picker:
|
||||
format: '% Y-% m-%d'
|
||||
js_format: 'yy-aa-'
|
||||
format: '% Y-% A-%d'
|
||||
js_format: 'yy-aa-gg'
|
||||
orders:
|
||||
error_flash_for_unavailable_items: "Sepetinizdeki bir öğe kullanılamıyor."
|
||||
error_flash_for_unavailable_items: "Sepetinizdeki bir ürün mevcut değil olarak güncellendi."
|
||||
edit:
|
||||
login_to_view_order: "Siparişinizi görmek için lütfen giriş yapın."
|
||||
bought:
|
||||
item: "Bu sipariş döngüsünde zaten sipariş verildi"
|
||||
item: "Bu sipariş döneminde zaten sipariş verildi"
|
||||
line_item:
|
||||
insufficient_stock: "Yetersiz stok, sadece %{on_hand} kaldı"
|
||||
out_of_stock: "Stoklar tükendi"
|
||||
unavailable_item: "Şu anda kullanılamıyor"
|
||||
unavailable_item: "Şu anda mevcut değil"
|
||||
shipment_states:
|
||||
backorder: bekleyen sipariş
|
||||
partial: kısmi
|
||||
pending: Bekliyor
|
||||
pending: bekliyor
|
||||
ready: hazır
|
||||
shipped: gönderildi
|
||||
payment_states:
|
||||
@@ -3197,7 +3264,7 @@ tr:
|
||||
pending: bekliyor
|
||||
resumed: devam edildi
|
||||
returned: iade edildi
|
||||
skrill: Skrill
|
||||
skrill: skrill
|
||||
subscription_state:
|
||||
active: aktif
|
||||
pending: bekliyor
|
||||
@@ -3227,33 +3294,33 @@ tr:
|
||||
settings: Hesap ayarları
|
||||
unconfirmed_email: "Bekleyen e-posta onayı: %{unconfirmed_email}. Yeni e-posta onaylandıktan sonra e-posta adresiniz güncellenecektir."
|
||||
orders:
|
||||
open_orders: Açık siparişler
|
||||
open_orders: Açık Siparişler
|
||||
past_orders: Geçmiş Siparişler
|
||||
transactions:
|
||||
transaction_history: işlem geçmişi
|
||||
transaction_history: İşlem Geçmişi
|
||||
open_orders:
|
||||
order: Sipariş
|
||||
shop: Dükkan
|
||||
changes_allowed_until: Kadar İzin Verilen Değişiklikler
|
||||
items: Öğeler
|
||||
shop: Tezgah
|
||||
changes_allowed_until: Değişiklikler Şu Zamana Kadar İzin Verildi
|
||||
items: Ürünler
|
||||
total: Toplam
|
||||
edit: Düzenle
|
||||
cancel: İptal etmek
|
||||
cancel: İptal et
|
||||
closed: Kapalı
|
||||
until: A kadar
|
||||
until: Şu zamana kadar
|
||||
past_orders:
|
||||
order: Sipariş
|
||||
shop: Dükkan
|
||||
completed_at: Bitiş Tarihi
|
||||
items: Öğeler
|
||||
completed_at: Tamamlanma Tarihi
|
||||
items: Ürünler
|
||||
total: Toplam
|
||||
paid?: Ücretli?
|
||||
view: Görünüm
|
||||
paid?: Ödendi?
|
||||
view: Göster
|
||||
saved_cards:
|
||||
default?: Varsayılan?
|
||||
delete?: Sil?
|
||||
cards:
|
||||
authorised_shops: Yetkili Mağazalar
|
||||
authorised_shops: Yetkili Pazarlar
|
||||
authorised_shops_popover: Sahip olabileceğiniz tüm üyelikler (mesela tekrarlayan siparişleriniz) için varsayılan kredi kartınızdan işlem yapmasına izin verilen işletmelerin listesidir. Kart bilgileriniz güvende tutulacak ve işletme sahipleriyle paylaşılmayacak. Ödeme alındığında her zaman bilgilendirileceksiniz.
|
||||
saved_cards_popover: Bu, daha sonra kullanmak üzere kaydetmeyi seçtiğiniz sepetlerin listesidir. Bir siparişin ödemesi tamamlandığında 'varsayılan'ınız otomatik olarak seçilir ve izin verdiğiniz satıcılar tarafından ücretlendirilebilir (sağa bakın).
|
||||
authorised_shops:
|
||||
@@ -3267,13 +3334,13 @@ tr:
|
||||
invalid_resource: "Geçersiz kaynak. Lütfen hataları düzeltin ve tekrar deneyin."
|
||||
resource_not_found: "Aradığınız kaynak bulunamadı."
|
||||
access: "API Erişimi"
|
||||
key: "anahtar"
|
||||
clear_key: "Temizle tuşu"
|
||||
key: "Anahtar"
|
||||
clear_key: "Anahtarı temizle"
|
||||
regenerate_key: "Anahtarı Yeniden Oluştur"
|
||||
no_key: "Anahtar yok"
|
||||
generate_key: "API anahtarı oluştur"
|
||||
key_generated: "Anahtar üretildi"
|
||||
key_cleared: "Anahtar silindi"
|
||||
key_generated: "Anahtar oluşturuldu"
|
||||
key_cleared: "Anahtar temizlendi"
|
||||
shipment:
|
||||
cannot_ready: "Gönderim hazırlanamıyor."
|
||||
invalid_taxonomy_id: "Geçersiz sınıflandırma kimliği."
|
||||
|
||||
@@ -83,6 +83,8 @@ Spree::Core::Engine.routes.draw do
|
||||
|
||||
get '/variants/search', :to => "variants#search", :as => :search_variants
|
||||
|
||||
resources :properties
|
||||
|
||||
resources :orders do
|
||||
member do
|
||||
put :fire
|
||||
@@ -110,8 +112,16 @@ Spree::Core::Engine.routes.draw do
|
||||
end
|
||||
|
||||
resource :customer, :controller => "orders/customer_details"
|
||||
|
||||
resources :return_authorizations do
|
||||
member do
|
||||
put :fire
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
resources :reports
|
||||
|
||||
resources :users do
|
||||
member do
|
||||
put :generate_api_key
|
||||
@@ -126,6 +136,7 @@ Spree::Core::Engine.routes.draw do
|
||||
end
|
||||
|
||||
resource :image_settings
|
||||
resources :trackers
|
||||
|
||||
resources :zones
|
||||
resources :countries do
|
||||
@@ -152,6 +163,10 @@ Spree::Core::Engine.routes.draw do
|
||||
resources :tax_rates
|
||||
resource :tax_settings
|
||||
resources :tax_categories
|
||||
|
||||
resources :shipping_methods
|
||||
resources :shipping_categories
|
||||
resources :payment_methods
|
||||
end
|
||||
|
||||
resources :orders do
|
||||
|
||||
@@ -15,9 +15,9 @@ module OpenFoodNetwork
|
||||
end
|
||||
|
||||
def stripe_configuration_incomplete?(payment_method)
|
||||
return true if payment_method.preferred_enterprise_id.zero?
|
||||
|
||||
payment_method.stripe_account_id.blank?
|
||||
payment_method.preferred_enterprise_id.nil? ||
|
||||
payment_method.preferred_enterprise_id.zero? ||
|
||||
payment_method.stripe_account_id.blank?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
65
lib/open_food_network/i18n_inflections.rb
Normal file
65
lib/open_food_network/i18n_inflections.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module OpenFoodNetwork
|
||||
# Pluralize or singularize words.
|
||||
#
|
||||
# We store some inflection data in locales and use a reverse lookup of a word
|
||||
# to find the plural or singular of the same word.
|
||||
#
|
||||
# Here is one example with a French user:
|
||||
#
|
||||
# - We have a product with the variant unit name "bouquet".
|
||||
# - The I18n.locale is set to :fr.
|
||||
# - The French locale contains:
|
||||
# bunch:
|
||||
# one: "bouquet"
|
||||
# other: "bouquets"
|
||||
# - We create a table containing:
|
||||
# "bouquet" => "bunch"
|
||||
# "bouquets" => "bunch"
|
||||
# - Looking up "bouquet" gives us the I18n key "bunch".
|
||||
# - We find the right plural by calling I18n:
|
||||
#
|
||||
# I18n.t("inflections.bunch", count: 2, default: "bouquet")
|
||||
#
|
||||
# - This returns the correct plural "bouquets".
|
||||
# - It returns the original "bouquet" if the word is missing from the locale.
|
||||
module I18nInflections
|
||||
# Make this a singleton to cache lookup tables.
|
||||
extend self
|
||||
|
||||
def pluralize(word, count)
|
||||
return word if count.nil?
|
||||
|
||||
key = i18n_key(word)
|
||||
|
||||
return word unless key
|
||||
|
||||
I18n.t(key, scope: "inflections", count: count, default: word)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def i18n_key(word)
|
||||
@lookup ||= {}
|
||||
|
||||
# The user may switch the locale. `I18n.t` is always using the current
|
||||
# locale and we need a lookup table for each of them.
|
||||
unless @lookup.key?(I18n.locale)
|
||||
@lookup[I18n.locale] = build_i18n_key_lookup
|
||||
end
|
||||
|
||||
@lookup[I18n.locale][word.downcase]
|
||||
end
|
||||
|
||||
def build_i18n_key_lookup
|
||||
lookup = {}
|
||||
I18n.t("inflections")&.each do |key, translations|
|
||||
translations.values.each do |translation|
|
||||
lookup[translation.downcase] = key
|
||||
end
|
||||
end
|
||||
lookup
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,3 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "open_food_network/i18n_inflections"
|
||||
|
||||
module OpenFoodNetwork
|
||||
class OptionValueNamer
|
||||
def initialize(variant = nil)
|
||||
@@ -38,8 +42,7 @@ module OpenFoodNetwork
|
||||
|
||||
else
|
||||
value = @variant.unit_value
|
||||
unit_name = @variant.product.variant_unit_name
|
||||
unit_name = unit_name.pluralize if value > 1
|
||||
unit_name = pluralize(@variant.product.variant_unit_name, value)
|
||||
end
|
||||
|
||||
value = value.to_i if value == value.to_i
|
||||
@@ -72,5 +75,9 @@ module OpenFoodNetwork
|
||||
|
||||
unit
|
||||
end
|
||||
|
||||
def pluralize(unit_name, count)
|
||||
I18nInflections.pluralize(unit_name, count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -203,6 +203,16 @@ feature '
|
||||
expect(p.reload.property('fooprop')).to be_nil
|
||||
end
|
||||
|
||||
scenario "loading new image page", js: true do
|
||||
product = create(:simple_product, supplier: @supplier2)
|
||||
|
||||
visit spree.admin_product_images_path(product)
|
||||
expect(page).to have_selector ".no-objects-found"
|
||||
|
||||
page.find('a#new_image_link').click
|
||||
expect(page).to have_selector "#image_attachment"
|
||||
end
|
||||
|
||||
scenario "deleting product images", js: true do
|
||||
product = create(:simple_product, supplier: @supplier2)
|
||||
image = File.open(File.expand_path('../../../app/assets/images/logo-white.png', __dir__))
|
||||
|
||||
@@ -710,13 +710,22 @@ describe "AdminProductEditCtrl", ->
|
||||
$httpBackend.flush()
|
||||
expect($scope.displayFailure).toHaveBeenCalled()
|
||||
|
||||
it "shows an alert with error information when post returns 400 with an errors array", ->
|
||||
spyOn(window, "alert")
|
||||
$scope.products = "updated list of products"
|
||||
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": ["an error"] }
|
||||
$scope.updateProducts "updated list of products"
|
||||
$httpBackend.flush()
|
||||
expect(window.alert).toHaveBeenCalledWith("Saving failed with the following error(s):\nan error\n")
|
||||
describe "displaying the error information when post returns 400", ->
|
||||
beforeEach ->
|
||||
spyOn $scope, "displayFailure"
|
||||
$scope.products = "updated list of products"
|
||||
|
||||
it "displays errors in an array", ->
|
||||
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": ["an error"] }
|
||||
$scope.updateProducts "updated list of products"
|
||||
$httpBackend.flush()
|
||||
expect($scope.displayFailure).toHaveBeenCalledWith("Saving failed with the following error(s):\nan error\n")
|
||||
|
||||
it "displays errors in a hash", ->
|
||||
$httpBackend.expectPOST("/admin/products/bulk_update").respond 400, { "errors": { "base": ["a basic error"] } }
|
||||
$scope.updateProducts "updated list of products"
|
||||
$httpBackend.flush()
|
||||
expect($scope.displayFailure).toHaveBeenCalledWith("Saving failed with the following error(s):\na basic error\n")
|
||||
|
||||
|
||||
describe "adding variants", ->
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
describe "OptionValueNamer", ->
|
||||
subject = null
|
||||
|
||||
beforeEach ->
|
||||
module('admin.products')
|
||||
inject (_OptionValueNamer_) ->
|
||||
subject = new _OptionValueNamer_
|
||||
|
||||
describe "pluralize a variant unit name", ->
|
||||
it "returns the same word if no plural is known", ->
|
||||
expect(subject.pluralize("foo", 2)).toEqual "foo"
|
||||
|
||||
it "returns the same word if we omit the quantity", ->
|
||||
expect(subject.pluralize("loaf")).toEqual "loaf"
|
||||
|
||||
it "finds the plural of a word", ->
|
||||
expect(subject.pluralize("loaf", 2)).toEqual "loaves"
|
||||
|
||||
it "finds the singular of a word", ->
|
||||
expect(subject.pluralize("loaves", 1)).toEqual "loaf"
|
||||
|
||||
it "finds the zero form of a word", ->
|
||||
expect(subject.pluralize("loaf", 0)).toEqual "loaves"
|
||||
|
||||
it "ignores upper case", ->
|
||||
expect(subject.pluralize("Loaf", 2)).toEqual "loaves"
|
||||
@@ -0,0 +1,20 @@
|
||||
describe "ErrorsParser service", ->
|
||||
errorsParser = null
|
||||
|
||||
beforeEach ->
|
||||
module('admin.utils')
|
||||
inject (ErrorsParser) ->
|
||||
errorsParser = ErrorsParser
|
||||
|
||||
describe "toString", ->
|
||||
it "returns empty string for nil errors", ->
|
||||
expect(errorsParser.toString(null)).toEqual ""
|
||||
|
||||
it "returns the elements in the array if an array is provided", ->
|
||||
expect(errorsParser.toString(["1", "2"])).toEqual "1\n2\n"
|
||||
|
||||
it "returns the elements in the hash if a hash is provided", ->
|
||||
expect(errorsParser.toString({ "keyname": ["1", "2"] })).toEqual "1\n2\n"
|
||||
|
||||
it "returns all elements in all hash keys provided", ->
|
||||
expect(errorsParser.toString({ "keyname1": ["1", "2"], "keyname2": ["3", "4"] })).toEqual "1\n2\n3\n4\n"
|
||||
40
spec/lib/open_food_network/i18n_inflections_spec.rb
Normal file
40
spec/lib/open_food_network/i18n_inflections_spec.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require 'open_food_network/i18n_inflections'
|
||||
|
||||
describe OpenFoodNetwork::I18nInflections do
|
||||
let(:subject) { described_class }
|
||||
|
||||
it "returns the same word if no plural is known" do
|
||||
expect(subject.pluralize("foo", 2)).to eq "foo"
|
||||
end
|
||||
|
||||
it "finds the plural of a word" do
|
||||
expect(subject.pluralize("bunch", 2)).to eq "bunches"
|
||||
end
|
||||
|
||||
it "finds the singular of a word" do
|
||||
expect(subject.pluralize("bunch", 1)).to eq "bunch"
|
||||
end
|
||||
|
||||
it "ignores upper case" do
|
||||
expect(subject.pluralize("Bunch", 2)).to eq "bunches"
|
||||
end
|
||||
|
||||
it "switches locales" do
|
||||
skip "French plurals not available yet"
|
||||
I18n.with_locale(:fr) do
|
||||
expect(subject.pluralize("bouquet", 2)).to eq "bouquets"
|
||||
end
|
||||
end
|
||||
|
||||
it "builds the lookup table once" do
|
||||
# Cache the table:
|
||||
subject.pluralize("bunch", 2)
|
||||
|
||||
# Expect only one call for the plural:
|
||||
expect(I18n).to receive(:t).once.and_call_original
|
||||
subject.pluralize("bunch", 2)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user