diff --git a/.gitignore b/.gitignore index d26b8ce7..a3389c40 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ log/*.log tmp/**/* -config/*.yml +config/app_config.yml +config/database.yml config/initializers/secret_token.rb db/*.sqlite3 nbproject/ @@ -16,4 +17,4 @@ doc/app/ Capfile config/deploy.rb config/deploy/* -.localeapp \ No newline at end of file +.localeapp diff --git a/Gemfile b/Gemfile index 83cd4333..3be7cf8c 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,8 @@ gem 'jquery-rails' gem 'select2-rails' gem 'bootstrap-datepicker-rails' gem 'rails-assets-listjs', '0.2.0.beta.4' # remember to maintain list.*.js plugins and template engines on update +gem 'i18n-js', git: 'git://github.com/fnando/i18n-js.git' # to avoid US-ASCII js.erb error +gem 'rails-i18n' gem 'mysql2' gem 'prawn' diff --git a/Gemfile.lock b/Gemfile.lock index 00e6eebe..0370d43d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,6 +4,13 @@ GIT specs: localize_input (0.1.0) +GIT + remote: git://github.com/fnando/i18n-js.git + revision: eab4137f83777963f0ebe6960704a7f64fd8911d + specs: + i18n-js (2.1.2) + i18n + GIT remote: git://github.com/technoweenie/acts_as_versioned.git revision: 63b1fc8529d028fae632fe80ec0cb25df56cd76b @@ -204,6 +211,9 @@ GEM railties (= 3.2.14) rails-assets-listjs (0.2.0.beta.4) railties (>= 3.1) + rails-i18n (3.0.0) + i18n (~> 0.5) + rails (>= 3.0.0, < 4.0.0) rails-settings-cached (0.2.4) rails (>= 3.0.0) railties (3.2.14) @@ -336,6 +346,7 @@ DEPENDENCIES factory_girl_rails (~> 4.0) faker haml-rails + i18n-js! i18n-spec inherited_resources jquery-rails @@ -349,6 +360,7 @@ DEPENDENCIES quiet_assets rails (~> 3.2.9) rails-assets-listjs (= 0.2.0.beta.4) + rails-i18n rails-settings-cached (= 0.2.4) resque rspec-core diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 382eb0c8..0517c896 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,6 +14,8 @@ //= require list.reset //= require rails.validations //= require rails.validations.simple_form +//= require i18n +//= require i18n/translations //= require_self //= require ordering //= require stupidtable diff --git a/app/assets/javascripts/ordering.js b/app/assets/javascripts/ordering.js index 159370f2..9c9a3d99 100644 --- a/app/assets/javascripts/ordering.js +++ b/app/assets/javascripts/ordering.js @@ -7,9 +7,6 @@ var modified = false // indicates if anything has been clicked on this page var groupBalance = 0; // available group money -var currencySeparator = "."; // default decimal separator -var currencyPrecision = 2; // default digits behind comma -var currencyUnit = "€"; // default currency var minimumBalance = 0; // minimum group balance for the order to be succesful var toleranceIsCostly = true; // default tolerance behaviour var isStockit = false; // Wheter the order is from stock oder normal supplier @@ -23,12 +20,6 @@ var toleranceOthers = new Array(); var itemsAllocated = new Array(); // how many items the group has been allocated and should definitely get var quantityAvailable = new Array(); // stock_order. how many items are currently in stock -function setCurrencyFormat(separator, precision, unit) { - currencySeparator = separator; - currencyPrecision = precision; - currencyUnit = unit; -} - function setToleranceBehaviour(value) { toleranceIsCostly = value; } @@ -124,7 +115,7 @@ function update(item, quantity, tolerance) { } else { itemTotal[item] = price[item] * (Number(quantity)); } - $('#price_' + item + '_display').html(asMoney(itemTotal[item])); + $('#price_' + item + '_display').html(I18n.l("currency", itemTotal[item])); // update missing units var missing_units = unit[item] - (((quantityOthers[item] + Number(quantity)) % unit[item]) + Number(tolerance) + toleranceOthers[item]) @@ -137,10 +128,6 @@ function update(item, quantity, tolerance) { updateBalance(); } -function asMoney(amount) { - return String(amount.toFixed(currencyPrecision)).replace(/\./, currencySeparator) + ' ' + currencyUnit; -} - function calcUnits(unitSize, quantity, tolerance) { var units = Math.floor(quantity / unitSize) var remainder = quantity % unitSize @@ -158,10 +145,10 @@ function updateBalance() { for (i in itemTotal) { total += itemTotal[i]; } - $('#total_price').html(asMoney(total)); + $('#total_price').html(I18n.l("currency", total)); var balance = groupBalance - total; - $('#new_balance').html(asMoney(balance)); - $('#total_balance').val(asMoney(balance)); + $('#new_balance').html(I18n.l("currency", balance)); + $('#total_balance').val(I18n.l("currency", balance)); // determine bgcolor and submit button state according to balance var bgcolor = ''; if (balance < minimumBalance) { @@ -191,6 +178,6 @@ $(function() { }); $('a[data-confirm_switch_order]').click(function() { - return (!modified || confirm('Änderungen an dieser Bestellung gehen verloren, wenn zu einer anderen Bestellung gewechselt wird. Möchtest Du trotzdem wechseln?')); + return (!modified || confirm(I18n.t('js.ordering.confirm_change'))); }); }); diff --git a/app/controllers/articles_controller.rb b/app/controllers/articles_controller.rb index b29fd594..c9dd1362 100644 --- a/app/controllers/articles_controller.rb +++ b/app/controllers/articles_controller.rb @@ -7,12 +7,12 @@ class ArticlesController < ApplicationController sort = case params['sort'] when "name" then "articles.name" when "unit" then "articles.unit" - when "category" then "article_categories.name" + when "article_category" then "article_categories.name" when "note" then "articles.note" when "availability" then "articles.availability" when "name_reverse" then "articles.name DESC" when "unit_reverse" then "articles.unit DESC" - when "category_reverse" then "article_categories.name DESC" + when "article_category_reverse" then "article_categories.name DESC" when "note_reverse" then "articles.note DESC" when "availability_reverse" then "articles.availability DESC" end diff --git a/app/controllers/login_controller.rb b/app/controllers/login_controller.rb index 3aab74c5..43ca5fdf 100644 --- a/app/controllers/login_controller.rb +++ b/app/controllers/login_controller.rb @@ -11,7 +11,7 @@ class LoginController < ApplicationController # Sends an email to a user with the token that allows setting a new password through action "password". def reset_password if request.get? || params[:user].nil? # Catch for get request and give better error message. - redirect_to forgot_password_url, alert: 'Ein Problem ist aufgetreten. Bitte erneut versuchen' and return + redirect_to forgot_password_url, alert: I18n.t('errors.general_again') and return end if (user = User.find_by_email(params[:user][:email])) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index e1cd7698..d52ae698 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -109,9 +109,9 @@ class OrdersController < ApplicationController supplier = order.supplier contact = FoodsoftConfig[:contact].symbolize_keys text = I18n.t('orders.fax.heading', :name => FoodsoftConfig[:name]) - text += "\n" + I18n.t('orders.fax.customer_number') + ': #{supplier.customer_number}' unless supplier.customer_number.blank? + text += "\n#{Supplier.human_attribute_name(:customer_number)}: #{supplier.customer_number}" unless supplier.customer_number.blank? text += "\n" + I18n.t('orders.fax.delivery_day') - text += "\n\n#{supplier.name}\n#{supplier.address}\n" + I18n.t('simple_form.labels.supplier.fax') + ": #{supplier.fax}\n\n" + text += "\n\n#{supplier.name}\n#{supplier.address}\n#{Supplier.human_attribute_name(:fax)}: #{supplier.fax}\n\n" text += "****** " + I18n.t('orders.fax.to_address') + "\n\n" text += "#{FoodsoftConfig[:name]}\n#{contact[:street]}\n#{contact[:zip_code]} #{contact[:city]}\n\n" text += "****** " + I18n.t('orders.fax.articles') + "\n\n" diff --git a/app/documents/order_fax.rb b/app/documents/order_fax.rb index f2182944..766a784c 100644 --- a/app/documents/order_fax.rb +++ b/app/documents/order_fax.rb @@ -21,15 +21,15 @@ class OrderFax < OrderPdf text "#{contact[:zip_code]} #{contact[:city]}", size: 9, align: :right move_down 5 unless @order.supplier.try(:customer_number).blank? - text "#{I18n.t('simple_form.labels.supplier.customer_number')}: #{@order.supplier[:customer_number]}", size: 9, align: :right + text "#{Supplier.human_attribute_name :customer_number}: #{@order.supplier[:customer_number]}", size: 9, align: :right move_down 5 end unless contact[:phone].blank? - text "#{I18n.t('simple_form.labels.supplier.phone')}: #{contact[:phone]}", size: 9, align: :right + text "#{Supplier.human_attribute_name :phone}: #{contact[:phone]}", size: 9, align: :right move_down 5 end unless contact[:email].blank? - text "#{I18n.t('simple_form.labels.supplier.email')}: #{contact[:email]}", size: 9, align: :right + text "#{Supplier.human_attribute_name :email}: #{contact[:email]}", size: 9, align: :right end end @@ -40,7 +40,7 @@ class OrderFax < OrderPdf text @order.supplier.try(:address).to_s unless @order.supplier.try(:fax).blank? move_down 5 - text "#{I18n.t('simple_form.labels.supplier.fax')}: #{@order.supplier[:fax]}" + text "#{Supplier.human_attribute_name :fax}: #{@order.supplier[:fax]}" end end @@ -48,10 +48,10 @@ class OrderFax < OrderPdf text Date.today.strftime(I18n.t('date.formats.default')), align: :right move_down 10 - text "#{I18n.t('simple_form.labels.delivery.delivered_on')}:" + text "#{Delivery.human_attribute_name :delivered_on}:" move_down 10 unless @order.supplier.try(:contact_person).blank? - text "#{I18n.t('simple_form.labels.supplier.contact_person')}: #{@order.supplier[:contact_person]}" + text "#{Supplier.human_attribute_name :contact_person}: #{@order.supplier[:contact_person]}" move_down 10 end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 167a558d..46f5e6c9 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -73,6 +73,22 @@ module ApplicationHelper link_to(text, url_for(url_options), html_options) end + + # Generates text for table heading for model attribute + # When the 'short' option is true, abbreviations will be used: + # When there is a non-empty model attribute 'foo', it looks for + # the model attribute translation 'foo_short' and use that as + # heading, with an acronym title of 'foo'. + # Other options are passed through to I18n. + def heading_helper(model, attribute, options = {}) + i18nopts = options.select {|a| !['short'].include?(a) } + s = model.human_attribute_name(attribute, i18nopts) + if options[:short] + sshort = model.human_attribute_name("#{attribute}_short".to_sym, options.merge({defaults: ''})) + s = raw "#{sshort}" unless sshort.empty? + end + s + end # Generates a link to the top of the website def link_to_top diff --git a/app/views/article_categories/index.html.haml b/app/views/article_categories/index.html.haml index dc18f042..00bcc354 100644 --- a/app/views/article_categories/index.html.haml +++ b/app/views/article_categories/index.html.haml @@ -5,8 +5,8 @@ %table.table.table-striped %thead %tr - %th= t('simple_form.labels.article_category.name') - %th= t('simple_form.labels.article_category.description') + %th= heading_helper ArticleCategory, :name + %th= heading_helper ArticleCategory, :description %th %tbody - @article_categories.each do |article_category| diff --git a/app/views/articles/_articles.html.haml b/app/views/articles/_articles.html.haml index fd00f23d..283abc53 100644 --- a/app/views/articles/_articles.html.haml +++ b/app/views/articles/_articles.html.haml @@ -6,16 +6,15 @@ %thead %tr %th - %th= sort_link_helper t('simple_form.labels.article.name'), "name" + %th= sort_link_helper heading_helper(Article, :name), "name" %th - %th= sort_link_helper t('simple_form.labels.article.article_category'), "category" - %th= sort_link_helper t('simple_form.labels.article.unit'), "unit" - %th= sort_link_helper t('simple_form.labels.article.note'), "note" - %th{:style => "width: 4em;"} - %acronym{:title => t('.unit_quantity_desc')}= t '.unit_quantity_short' - %th{:style => "width: 5em;"}= t '.price_netto' - %th{:style => "width: 3.5em;"}= t 'simple_form.labels.defaults.tax' - %th{:style => "width: 4em;"}= t 'simple_form.labels.defaults.deposit' + %th= sort_link_helper heading_helper(Article, :article_category), "article_category" + %th= sort_link_helper heading_helper(Article, :unit), "unit" + %th= sort_link_helper heading_helper(Article, :note), "note" + %th{:style => "width: 4em;"}= heading_helper Article, :unit_quantity, short: true + %th{:style => "width: 5em;"}= heading_helper Article, :price + %th{:style => "width: 3.5em;"}= heading_helper Article, :tax + %th{:style => "width: 4em;"}= heading_helper Article, :deposit %th{:style => "width: 3em;"} %tbody#listbody diff --git a/app/views/articles/_edit_all_table.html.haml b/app/views/articles/_edit_all_table.html.haml index bd9441f7..e7752792 100644 --- a/app/views/articles/_edit_all_table.html.haml +++ b/app/views/articles/_edit_all_table.html.haml @@ -1,20 +1,16 @@ %table.table %thead %tr - %th - %acronym{:title => t('.available_desc')}= t '.available_short' - %th= t 'simple_form.labels.article.name' - %th= t 'simple_form.labels.article.unit' - %th - %acronym{:title => t('.price_desc')}= t '.price_short' - %th - %acronym{:title => t('.unit_quantity_desc')}= t '.unit_quantity_short' - %th - %acronym{:title => t('.order_number_desc')}= t '.order_number_short' - %th= t 'simple_form.labels.article.note' - %th= t 'simple_form.labels.article.article_category' - %th= t 'simple_form.labels.defaults.tax' - %th= t 'simple_form.labels.defaults.deposit' + %th= heading_helper Article, :availability, short: true + %th= heading_helper Article, :name + %th= heading_helper Article, :unit + %th= heading_helper Article, :price, short: true + %th= heading_helper Article, :unit_quantity, short: true + %th= heading_helper Article, :order_number, short: true + %th= heading_helper Article, :note + %th= heading_helper Article, :article_category + %th= heading_helper Article, :tax + %th= heading_helper Article, :deposit %tbody - @articles.each_with_index do |article, index| = fields_for "articles[#{article.id || index}]", article do |form| diff --git a/app/views/articles/_import_search_results.haml b/app/views/articles/_import_search_results.haml index 6d4c6720..254abca8 100644 --- a/app/views/articles/_import_search_results.haml +++ b/app/views/articles/_import_search_results.haml @@ -5,13 +5,13 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.article.name' - %th= t 'simple_form.labels.article.origin' - %th= t 'simple_form.labels.article.manufacturer' - %th= t 'simple_form.labels.article.note' - %th{:style => "width:4em"}= t 'simple_form.labels.defaults.price' - %th= t 'simple_form.labels.article.unit' - %th= t 'simple_form.labels.defaults.unit_quantity' + %th= heading_helper Article, :name + %th= heading_helper Article, :origin + %th= heading_helper Article, :manufacturer + %th= heading_helper Article, :note + %th{:style => "width:4em"}= heading_helper Article, :price + %th= heading_helper Article, :unit + %th= heading_helper Article, :unit_quantity, short: true %th %tbody - for article in @articles diff --git a/app/views/articles/sync.html.haml b/app/views/articles/sync.html.haml index 1039aee4..58273178 100644 --- a/app/views/articles/sync.html.haml +++ b/app/views/articles/sync.html.haml @@ -11,8 +11,7 @@ = hidden_field_tag "outlisted_articles[#{article.id}]", '1' = article.name - if article.in_open_order - .alert - Achtung, #{article.name} wird gerade in einer laufenden Bestellung verwendet. Bitte erst Bestellung anpassen. + .alert= t '.alert_used', article: article.name - else %i= t '.outlist.body_skip' %hr/ @@ -24,16 +23,16 @@ %table.table %thead %tr - %th= t 'simple_form.labels.article.name' - %th= t 'simple_form.labels.article.note' - %th= t 'simple_form.labels.article.manufacturer' - %th= t 'simple_form.labels.article.origin' - %th= t 'simple_form.labels.article.unit' - %th= t '.unit_quantity_short' - %th= t '.price_short' - %th= t 'simple_form.labels.defaults.tax' - %th= t 'simple_form.labels.defaults.deposit' - %th= t 'simple_form.labels.article.article_category' + %th= heading_helper Article, :name + %th= heading_helper Article, :note + %th= heading_helper Article, :manufacturer + %th= heading_helper Article, :origin + %th= heading_helper Article, :unit + %th= heading_helper Article, :unit_quantity, short: true + %th= heading_helper Article, :price + %th= heading_helper Article, :tax + %th= heading_helper Article, :deposit + %th= heading_helper Article, :article_category %tbody - @updated_articles.each do |updated_article, attrs| - article = Article.find(updated_article.id) diff --git a/app/views/articles/upload.html.haml b/app/views/articles/upload.html.haml index 7cb5f4fb..6a8b4d50 100644 --- a/app/views/articles/upload.html.haml +++ b/app/views/articles/upload.html.haml @@ -2,19 +2,19 @@ = t('.body').html_safe %pre = [t('.fields.status'), - t('simple_form.labels.defaults.order_number'), - t('simple_form.labels.article.name'), - t('simple_form.labels.article.note'), - t('simple_form.labels.article.manufacturer'), - t('simple_form.labels.article.origin'), - t('simple_form.labels.article.unit'), - t('simple_form.labels.defaults.price'), - t('simple_form.labels.defaults.tax'), - t('simple_form.labels.defaults.deposit'), - t('simple_form.labels.defaults.unit_quantity'), + Article.human_attribute_name(:order_number), + Article.human_attribute_name(:name), + Article.human_attribute_name(:note), + Article.human_attribute_name(:manufacturer), + Article.human_attribute_name(:origin), + Article.human_attribute_name(:unit), + Article.human_attribute_name(:price), + Article.human_attribute_name(:tax), + Article.human_attribute_name(:deposit), + Article.human_attribute_name(:unit_quantity), t('.fields.season_amount'), t('.fields.season_price'), - t('simple_form.labels.article.article_category')].join(" | ") + Article.human_attribute_name(:article_category)].join(" | ") = form_for :articles, :url => parse_upload_supplier_articles_path(@supplier), :html => { :multipart => true } do |f| diff --git a/app/views/deliveries/index.html.haml b/app/views/deliveries/index.html.haml index 16b0388b..423332b1 100644 --- a/app/views/deliveries/index.html.haml +++ b/app/views/deliveries/index.html.haml @@ -3,9 +3,9 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.delivery.delivered_on' + %th= heading_helper Delivery, :delivered_on %th.numeric= t 'deliveries.invoice_amount' - %th= t 'simple_form.labels.defaults.note' + %th= heading_helper Delivery, :note %tbody - for delivery in @deliveries %tr diff --git a/app/views/deliveries/show.html.haml b/app/views/deliveries/show.html.haml index 05a39db6..d5df7fd5 100644 --- a/app/views/deliveries/show.html.haml +++ b/app/views/deliveries/show.html.haml @@ -1,16 +1,16 @@ - title t('.title') %dl - %dt= t 'simple_form.labels.delivery.supplier' + %dt= heading_helper Delivery, :supplier %dd= @delivery.supplier.name - %dt= t 'simple_form.labels.delivery.delivered_on' + %dt= heading_helper Delivery, :delivered_on %dd= @delivery.delivered_on %dt= t 'deliveries.invoice_amount' %dd= link_to_invoice(@delivery) - if @delivery.invoice %dt= t 'deliveries.invoice_net_amount' %dd= number_to_currency @delivery.invoice.net_amount - %dt= t 'simple_form.labels.defaults.note' + %dt= heading_helper Delivery, :note %dd= simple_format @delivery.note %h2= t '.title_articles' diff --git a/app/views/finance/group_order_articles/_form.html.haml b/app/views/finance/group_order_articles/_form.html.haml index f606e3ac..8b6d41a0 100644 --- a/app/views/finance/group_order_articles/_form.html.haml +++ b/app/views/finance/group_order_articles/_form.html.haml @@ -5,7 +5,7 @@ %h3= t('.amount_change_for', article: @order_article.article.name) .modal-body = form.input :ordergroup_id, as: :select, collection: Ordergroup.all.map { |g| [g.name, g.id] } - = form.input :result, hint: "Einheit: #{@order_article.article.unit}" + = form.input :result, hint: I18n.t('.result_hint', unit: @order_article.article.unit) .modal-footer = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'} = form.submit t('ui.save'), class: 'btn btn-primary' diff --git a/app/views/finance/invoices/_invoices.html.haml b/app/views/finance/invoices/_invoices.html.haml index 1663c609..621a08fe 100644 --- a/app/views/finance/invoices/_invoices.html.haml +++ b/app/views/finance/invoices/_invoices.html.haml @@ -5,14 +5,14 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.invoice.number' - %th= t 'simple_form.labels.invoice.supplier' - %th= t 'simple_form.labels.invoice.date' - %th= t 'simple_form.labels.invoice.paid_on' - %th= t 'simple_form.labels.invoice.amount' - %th= t 'simple_form.labels.invoice.delivery' - %th= t 'simple_form.labels.invoice.order' - %th= t 'simple_form.labels.invoice.note' + %th= heading_helper Invoice, :number + %th= heading_helper Invoice, :supplier + %th= heading_helper Invoice, :date + %th= heading_helper Invoice, :paid_on + %th= heading_helper Invoice, :amount + %th= heading_helper Invoice, :delivery + %th= heading_helper Invoice, :order + %th= heading_helper Invoice, :note %th %th %tbody diff --git a/app/views/finance/invoices/show.html.haml b/app/views/finance/invoices/show.html.haml index 28bb4519..1106aa5c 100644 --- a/app/views/finance/invoices/show.html.haml +++ b/app/views/finance/invoices/show.html.haml @@ -1,38 +1,38 @@ - title t('.title', number: @invoice.number) %p - %b= t('simple_form.labels.invoice.supplier') + ':' + %b= heading_helper(Invoice, :supplier) + ':' = @invoice.supplier.name - if @invoice.delivery %p - %b= t('simple_form.labels.invoice.delivery') + ':' + %b= heading_helper(Invoice, :delivery) + ':' = t('finance.invoices.linked', what_link: link_to(t('finance.invoices.linked_delivery'), [@invoice.supplier,@invoice.delivery])).html_safe - if @invoice.order %p - %b= t('simple_form.labels.invoice.order') + ':' + %b= heading_helper(Invoice, :order) + ':' = t('finance.invoices.linked', what_link: link_to(t('finance.invoices.linked_order'), @invoice.order)).html_safe %p - %b= t('simple_form.labels.invoice.number') + ':' + %b= heading_helper(Invoice, :number) + ':' = @invoice.number %p - %b= t('simple_form.labels.invoice.date') + ':' + %b= heading_helper(Invoice, :date) + ':' = @invoice.date %p - %b= t('simple_form.labels.invoice.paid_on') + ':' + %b= heading_helper(Invoice, :paid_on) + ':' = @invoice.paid_on %p - %b= t('simple_form.labels.invoice.amount') + ':' + %b= heading_helper(Invoice, :amount) + ':' = number_to_currency @invoice.amount %p - %b= t('simple_form.labels.invoice.deposit') + ':' + %b= heading_helper(Invoice, :deposit) + ':' = number_to_currency @invoice.deposit %p - %b= t('simple_form.labels.invoice.deposit_credit') + ':' + %b= heading_helper(Invoice, :deposit_credit) + ':' = number_to_currency @invoice.deposit_credit %p - %b= t('simple_form.labels.invoice.note') + ':' + %b= heading_helper(Invoice, :note) + ':' =h @invoice.note = link_to t('ui.edit'), edit_finance_invoice_path(@invoice) diff --git a/app/views/finance/order_articles/_edit.html.haml b/app/views/finance/order_articles/_edit.html.haml index 3c63807e..0dddf8cd 100644 --- a/app/views/finance/order_articles/_edit.html.haml +++ b/app/views/finance/order_articles/_edit.html.haml @@ -11,7 +11,7 @@ = f.input :unit - if @order_article.article.is_a?(StockArticle) - %div.alert Preise von Lagerartikeln können nicht geändert werden! + %div.alert= t '.stock_alert' - else = simple_fields_for :article_price, @order_article.article_price do |f| = f.input :unit_quantity diff --git a/app/views/foodcoop/users/_users.html.haml b/app/views/foodcoop/users/_users.html.haml index 90b1de3a..1ecbb107 100644 --- a/app/views/foodcoop/users/_users.html.haml +++ b/app/views/foodcoop/users/_users.html.haml @@ -4,12 +4,12 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.user.nick' - %th= t 'simple_form.labels.user.name' - %th= t 'simple_form.labels.user.email' - %th= t 'simple_form.labels.user.phone' - %th= t 'simple_form.labels.user.ordergroup' - %th= t 'simple_form.labels.user.workgroup', count: 3 + %th= heading_helper User, :nick + %th= heading_helper User, :name + %th= heading_helper User, :email + %th= heading_helper User, :phone + %th= heading_helper User, :ordergroup + %th= heading_helper User, :workgroup, count: 3 %tbody - for user in @users %tr diff --git a/app/views/group_orders/_form.html.haml b/app/views/group_orders/_form.html.haml index 3c6048c0..6f4a4133 100644 --- a/app/views/group_orders/_form.html.haml +++ b/app/views/group_orders/_form.html.haml @@ -3,7 +3,6 @@ $(function() { #{data_to_js(@ordering_data)} setGroupBalance(#{@ordering_data[:available_funds]}); - setCurrencyFormat("#{t('number.currency.format.separator')}", #{t('number.currency.format.precision')}, "#{t('number.currency.format.unit')}"); setMinimumBalance(#{FoodsoftConfig[:minimum_balance] or 0}); setToleranceBehaviour(#{FoodsoftConfig[:tolerance_is_costly]}); setStockit(#{@order.stockit?}); diff --git a/app/views/layouts/_header.html.haml b/app/views/layouts/_header.html.haml index dfd5f2f5..b3a4e30c 100644 --- a/app/views/layouts/_header.html.haml +++ b/app/views/layouts/_header.html.haml @@ -22,7 +22,9 @@ Javascripts \================================================== / Placed at the end of the document so the pages load faster - :javascript - I18n = {locale: '#{j(I18n.locale.to_s)}'} = javascript_include_tag "application" + :javascript + I18n.defaultLocale = "#{I18n.default_locale}"; + I18n.locale = "#{I18n.locale}"; + I18n.fallbacks = true; = yield(:javascript) diff --git a/app/views/stockit/_form.html.haml b/app/views/stockit/_form.html.haml index 8b96aea8..32e58623 100644 --- a/app/views/stockit/_form.html.haml +++ b/app/views/stockit/_form.html.haml @@ -11,7 +11,7 @@ %span.add-on % = f.input :deposit - else - = f.input :price, :input_html => {:disabled => 'disabled'}, :hint => t('.form.price_hint') + = f.input :price, :input_html => {:disabled => 'disabled'}, :hint => t('.price_hint') = f.association :article_category .form-actions = f.submit class: 'btn' diff --git a/app/views/suppliers/index.haml b/app/views/suppliers/index.haml index 2ea9ad27..e49c8f83 100644 --- a/app/views/suppliers/index.haml +++ b/app/views/suppliers/index.haml @@ -6,9 +6,9 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.supplier.name' - %th= t 'simple_form.labels.supplier.phone' - %th= t 'simple_form.labels.supplier.customer_number' + %th= heading_helper Supplier, :name + %th= heading_helper Supplier, :phone + %th= heading_helper Supplier, :customer_number, short: true %th %th %th diff --git a/app/views/suppliers/shared_suppliers.haml b/app/views/suppliers/shared_suppliers.haml index 22cf67da..8e9c3eef 100644 --- a/app/views/suppliers/shared_suppliers.haml +++ b/app/views/suppliers/shared_suppliers.haml @@ -4,11 +4,11 @@ %table.table.table-striped %thead %tr - %th= t 'simple_form.labels.supplier.name' - %th= t 'simple_form.labels.supplier.address' - %th= t 'simple_form.labels.supplier.note' - %th= t 'simple_form.labels.supplier.delivery_days' - %th= t 'simple_form.labels.supplier.is_subscribed' + %th= heading_helper Supplier, :name + %th= heading_helper Supplier, :address + %th= heading_helper Supplier, :note + %th= heading_helper Supplier, :delivery_days + %th= heading_helper Supplier, :is_subscribed %tbody - for shared_supplier in @shared_suppliers %tr diff --git a/app/views/suppliers/show.haml b/app/views/suppliers/show.haml index f07b09c9..fbc4e90a 100644 --- a/app/views/suppliers/show.haml +++ b/app/views/suppliers/show.haml @@ -7,29 +7,29 @@ = t 'suppliers.shared_supplier_note' %dl.dl-horizontal - %dt= t('simple_form.labels.supplier.address') + ':' + %dt= heading_helper(Supplier, :address) + ':' %dd= @supplier.address - %dt= t('simple_form.labels.supplier.phone') + ':' + %dt= heading_helper(Supplier, :phone) + ':' %dd= @supplier.phone - %dt= t('simple_form.labels.supplier.phone2') + ':' + %dt= heading_helper(Supplier, :phone2) + ':' %dd= @supplier.phone2 - %dt= t('simple_form.labels.supplier.fax') + ':' + %dt= heading_helper(Supplier, :fax) + ':' %dd= @supplier.fax - %dt= t('simple_form.labels.supplier.email') + ':' + %dt= heading_helper(Supplier, :email) + ':' %dd= @supplier.email - %dt= t('simple_form.labels.supplier.url') + ':' + %dt= heading_helper(Supplier, :url) + ':' %dd= link_to @supplier.url, @supplier.url - %dt= t('simple_form.labels.supplier.contact_person') + ':' + %dt= heading_helper(Supplier, :contact_person) + ':' %dd= @supplier.contact_person - %dt= t('simple_form.labels.supplier.customer_number') + ':' + %dt= heading_helper(Supplier, :customer_number) + ':' %dd= @supplier.customer_number - %dt= t('simple_form.labels.supplier.delivery_days') + ':' + %dt= heading_helper(Supplier, :delivery_days) + ':' %dd= @supplier.delivery_days - %dt= t('simple_form.labels.supplier.order_howto') + ':' + %dt= heading_helper(Supplier, :order_howto) + ':' %dd= @supplier.order_howto - %dt= t('simple_form.labels.supplier.note') + ':' + %dt= heading_helper(Supplier, :note) + ':' %dd= @supplier.note - %dt= t('simple_form.labels.supplier.min_order_quantity') + ':' + %dt= heading_helper(Supplier, :min_order_quantity) + ':' %dd= @supplier.min_order_quantity .clearfix @@ -43,8 +43,8 @@ %table.table.table-horizontal %thead %tr - %th= t 'simple_form.labels.defaults.date' - %th= t 'simple_form.labels.defaults.amount' + %th= heading_helper Delivery, :date + %th= heading_helper Delivery, :amount %tbody - for delivery in @deliveries %tr diff --git a/app/views/tasks/show.haml b/app/views/tasks/show.haml index 8777d15d..86de92bf 100644 --- a/app/views/tasks/show.haml +++ b/app/views/tasks/show.haml @@ -3,22 +3,22 @@ %section %dl.dl-horizontal - %dt= t 'simple_form.labels.task.name' + %dt= Task.human_attribute_name(:name) %dd= @task.name - if @task.description.present? - %dt= t 'simple_form.labels.defaults.description' + %dt= Task.human_attribute_name(:description) %dd= simple_format(@task.description) - if @task.due_date.present? - %dt= t '.due_date' + %dt= Task.human_attribute_name(:due_date) %dd = format_date(@task.due_date) - if @task.periodic? %i.icon-repeat{title: t('tasks.repeated')} - %dt= t 'simple_form.labels.task.duration' + %dt= Task.human_attribute_name(:duration) %dd= t('.hours', count: @task.duration) - %dt= t 'simple_form.labels.task.user_list' + %dt= Task.human_attribute_name(:user_list) %dd= task_assignments(@task) - %dt= t 'simple_form.labels.task.workgroup' + %dt= Task.human_attribute_name(:workgroup) %dd - if @task.workgroup = link_to @task.workgroup.name, workgroup_tasks_path(workgroup_id: @task.workgroup_id) @@ -30,7 +30,7 @@ - unless @task.done? = link_to t('.mark_done'), set_done_task_path(@task), method: :post, class: 'btn' = link_to t('ui.edit'), edit_task_path(@task), class: 'btn' - = link_to t('ui.delete'), task_path(@task), :method => :delete, :confirm => "Die Aufgabe wirklich löschen?", + = link_to t('ui.delete'), task_path(@task), :method => :delete, :confirm => t('.confirm_delete_single'), class: 'btn btn-danger' - if @task.periodic? = link_to t('.delete_group'), task_path(@task, periodic: true), method: :delete, diff --git a/config/application.rb b/config/application.rb index 6d519277..ee7d7d71 100644 --- a/config/application.rb +++ b/config/application.rb @@ -30,7 +30,8 @@ module Foodsoft # config.time_zone = 'Central Time (US & Canada)' # Internationalization. - config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] + config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.yml')] + config.i18n.available_locales = Pathname.glob(Rails.root.join('config', 'locales', '??{-*,}.yml')).map{|p| p.basename('.yml').to_s } config.i18n.default_locale = :en # Configure the default encoding used in templates for Ruby 1.9. diff --git a/config/environments/development.rb.SAMPLE b/config/environments/development.rb.SAMPLE index 826028ba..ac1781e6 100644 --- a/config/environments/development.rb.SAMPLE +++ b/config/environments/development.rb.SAMPLE @@ -35,6 +35,9 @@ Foodsoft::Application.configure do # Expands the lines which load the assets config.assets.debug = true + # Required for i18n-js + config.assets.initialize_on_precompile = true + # Configure hostname for action mailer config.action_mailer.default_url_options = { host: 'localhost:3000' } @@ -42,4 +45,4 @@ Foodsoft::Application.configure do # Mailcatcher can be installed by gem install mailcatcher config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: "localhost", port: 1025 } -end \ No newline at end of file +end diff --git a/config/environments/test.rb b/config/environments/test.rb index 30c06137..b67c0285 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -11,6 +11,9 @@ Foodsoft::Application.configure do config.serve_static_assets = true config.static_cache_control = "public, max-age=3600" + # Required for i18n-js + config.assets.initialize_on_precompile = true + # Log error messages when you accidentally call methods on nil config.whiny_nils = true diff --git a/config/i18n-js.yml b/config/i18n-js.yml new file mode 100644 index 00000000..76af6fda --- /dev/null +++ b/config/i18n-js.yml @@ -0,0 +1,4 @@ +# only serve selected strings for i18n-js to keep filesize down +translations: +- file: 'app/assets/javascripts/i18n/translations.js' + only: ['*.js.*', '*.number.*', '*.date.formats.*'] diff --git a/config/locales/de.yml b/config/locales/de.yml index ab2c694b..7d3a33e6 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,103 +1,142 @@ de: - activemodel: - errors: - format: ! '%{attribute} %{message}' - general: Ein Problem ist aufgetreten. - general_again: Ein Fehler ist aufgetreten. Bitte erneut versuchen. - general_msg: ! 'Ein Fehler ist aufgetreten: %{msg}' - messages: - accepted: muss akzeptiert werden - blank: muss ausgefüllt werden - confirmation: stimmt nicht mit der Bestätigung überein - empty: muss ausgefüllt werden - equal_to: muss genau %{count} sein - even: muss gerade sein - exclusion: ist nicht verfügbar - greater_than: muss größer als %{count} sein - greater_than_or_equal_to: muss größer oder gleich %{count} sein - inclusion: ist kein gültiger Wert - invalid: ist nicht gültig - less_than: muss kleiner als %{count} sein - less_than_or_equal_to: muss kleiner oder gleich %{count} sein - not_a_number: ist keine Zahl - not_an_integer: muss ganzzahlig sein - odd: muss ungerade sein - record_invalid: ! 'Gültigkeitsprüfung ist fehlgeschlagen: %{errors}' - taken: ist bereits vergeben - taken_with_deleted: ist bereits vergeben (eine gelöschte Gruppe) - too_long: ist zu lang (nicht mehr als %{count} Zeichen) - too_short: ist zu kurz (nicht weniger als %{count} Zeichen) - wrong_length: hat die falsche Länge (muss genau %{count} Zeichen haben) - template: - body: ! 'Bitte überprüfen Sie die folgenden Felder:' - header: - one: ! 'Konnte %{model} nicht speichern: ein Fehler.' - other: ! 'Konnte %{model} nicht speichern: %{count} Fehler.' activerecord: attributes: article: article_category: Kategorie availability: Artikel ist verfügbar? + availability_short: verf. deposit: Pfand fc_price: Endpreis - fc_share: FC-Aufschlag + fc_price_short: + fc_share: FoodCoop-Aufschlag + fc_share_short: FC-Aufschlag gross_price: Bruttopreis + manufacturer: Produzent name: Name note: Notiz + order_number: Bestellnummer + origin: Herkunft price: Nettopreis supplier: Lieferantin tax: MwSt unit: Einheit unit_quantity: Gebindegröße + unit_quantity_short: GebGr + article_category: + description: Beschreibung + name: Name + delivery: + delivered_on: Lieferdatum + note: Notiz + supplier: Lieferantin financial_transaction: amount: Betrag note: Notiz + group_order_article: + ordergroup_id: Bestellgruppe + result: Menge + invoice: + amount: Betrag + date: Rechnungsdatum + delivery: Lieferung + deposit: Pfand berechnet + deposit_credit: Pfand gutgeschrieben + note: Notiz + number: Nummer + order: Bestellung + paid_on: Bezahlt am + supplier: Lieferant + message: + body: Inhalt + group_id: Gruppe + private: Privat + recipient_tokens: Empfänger_innen + sent_to_all: An alle Mitglieder schicken + subject: Betreff + order: + ends: Endet am + note: Notiz + starts: Läuft vom + order_article: + units_to_order: Menge + update_current_price: Globalen Preis aktualisieren + order_comment: + text: Kommentiere diese Bestellung ... + ordergroup: + contact_address: Adresse + contact_person: Kontaktperson + contact_phone: Telefon + description: Beschreibung + ignore_apple_restriction: Bestellstop bei zu wenig Äpfeln ignorieren + name: Name + user_tokens: Mitglieder + page: + body: Inhalt + parent_id: Oberseite + title: Titel stock_article: price: Nettopreis quantity: Lagerbestand quantity_available: Verfügbarer Bestand + supplier: Lieferant + stock_taking: + date: Datum + note: Notiz + supplier: + address: Adresse + contact_person: Ansprechparter_in + customer_number: Kundennummer + customer_number_short: Kundennr. + delivery_days: Liefertage + email: Email + fax: FAX + is_subscribed: abonniert? + min_order_quantity: Mindestbestellmenge + name: Name + note: Notiz + order_howto: Howto Bestellen + phone: Telefon + phone2: Telefon 2 + url: Homepage + task: + description: Beschreibung + done: Erledigt? + due_date: Wann erledigen? + duration: Dauer + name: Name + required_users: Anzahl + user_list: Verantwortliche + workgroup: Arbeitsgruppe user: + email: Email first_name: Vorname + last_name: Nachname + name: Name + nick: Benutzername + ordergroup: Bestellgruppe password: Passwort + password_confirmation: Passwort wiederholen + phone: Telefon + workgroup: + one: Arbeitsgruppe + other: Arbeitsgruppen + workgroup: + name: Name + description: Beschreibung + next_weekly_tasks_number: Für wieviel Wochen im Voraus sollen Aufgaben erstellt werden? + role_admin: Administration + role_article_meta: Artikeldatenbank + role_finance: Finanzen + role_orders: Bestellverwaltung + role_suppliers: Lieferanten + user_tokens: Mitglieder errors: - format: ! '%{attribute} %{message}' - general: Ein Problem ist aufgetreten. - general_again: Ein Fehler ist aufgetreten. Bitte erneut versuchen. - general_msg: ! 'Ein Fehler ist aufgetreten: %{msg}' has_many_left: ist noch mit einem/r %{collection} verknüpft! - messages: - accepted: muss akzeptiert werden - blank: muss ausgefüllt werden - confirmation: stimmt nicht mit der Bestätigung überein - empty: muss ausgefüllt werden - equal_to: muss genau %{count} sein - even: muss gerade sein - exclusion: ist nicht verfügbar - greater_than: muss größer als %{count} sein - greater_than_or_equal_to: muss größer oder gleich %{count} sein - inclusion: ist kein gültiger Wert - invalid: ist nicht gültig - less_than: muss kleiner als %{count} sein - less_than_or_equal_to: muss kleiner oder gleich %{count} sein - not_a_number: ist keine Zahl - not_an_integer: muss ganzzahlig sein - odd: muss ungerade sein - record_invalid: ! 'Gültigkeitsprüfung ist fehlgeschlagen: %{errors}' - taken: ist bereits vergeben - taken_with_deleted: ist bereits vergeben (eine gelöschte Gruppe) - too_long: ist zu lang (nicht mehr als %{count} Zeichen) - too_short: ist zu kurz (nicht weniger als %{count} Zeichen) - wrong_length: hat die falsche Länge (muss genau %{count} Zeichen haben) models: task: attributes: done: exclusion: erledigte Aufgaben können nicht wöchentlich wiederholt werden - template: - body: ! 'Bitte überprüfen Sie die folgenden Felder:' - header: - one: ! 'Konnte %{model} nicht speichern: ein Fehler.' - other: ! 'Konnte %{model} nicht speichern: %{count} Fehler.' models: article: Artikel article_category: Artikelkategorie @@ -318,6 +357,7 @@ de: title: sync: outlist: + alert_used: Achtung, %{article} wird gerade in einer laufenden Bestellung verwendet. Bitte erst Bestellung anpassen. body: ! 'Folgende Artikel wurden ausgelistet und werden gelöscht:' body_skip: Es müssen keine Artikel gelöscht werden. title: Auslisten ... @@ -338,102 +378,6 @@ de: file_label: Bitte wähle eine kompatible Datei aus submit: Datei hochladen title: ! '%{supplier} / Artikel hochladen' - date: - abbr_day_names: - - So - - Mo - - Di - - Mi - - Do - - Fr - - Sa - abbr_month_names: - - - - Jan - - Feb - - Mär - - Apr - - Mai - - Jun - - Jul - - Aug - - Sep - - Okt - - Nov - - Dez - day_names: - - Sonntag - - Montag - - Dienstag - - Mittwoch - - Donnerstag - - Freitag - - Samstag - formats: - default: ! '%d.%m.%Y' - long: ! '%e. %B %Y' - short: ! '%e. %b' - month_names: - - - - Januar - - Februar - - März - - April - - Mai - - Juni - - Juli - - August - - September - - Oktober - - November - - Dezember - order: - - :day - - :month - - :year - datetime: - distance_in_words: - about_x_hours: - one: etwa eine Stunde - other: etwa %{count} Stunden - about_x_months: - one: etwa ein Monat - other: etwa %{count} Monate - about_x_years: - one: etwa ein Jahr - other: etwa %{count} Jahre - almost_x_years: - one: fast ein Jahr - other: fast %{count} Jahre - half_a_minute: eine halbe Minute - less_than_x_minutes: - one: weniger als eine Minute - other: weniger als %{count} Minuten - less_than_x_seconds: - one: weniger als eine Sekunde - other: weniger als %{count} Sekunden - over_x_years: - one: mehr als ein Jahr - other: mehr als %{count} Jahre - x_days: - one: ein Tag - other: ! '%{count} Tage' - x_minutes: - one: eine Minute - other: ! '%{count} Minuten' - x_months: - one: ein Monat - other: ! '%{count} Monate' - x_seconds: - one: eine Sekunde - other: ! '%{count} Sekunden' - prompts: - day: Tag - hour: Stunden - minute: Minuten - month: Monat - second: Sekunden - year: Jahr deliveries: add_stock_change: how_many_units: Wie viele Einheiten (%{unit}) des Artikels »%{name}« liefern? @@ -533,38 +477,9 @@ de: title: ! 'Sortiermatrix der Bestellung: %{name}, beendet am %{date}' total: Insgesamt %{count} Artikel errors: - format: ! '%{attribute} %{message}' general: Ein Problem ist aufgetreten. general_again: Ein Fehler ist aufgetreten. Bitte erneut versuchen. general_msg: ! 'Ein Fehler ist aufgetreten: %{msg}' - messages: - accepted: muss akzeptiert werden - blank: muss ausgefüllt werden - confirmation: stimmt nicht mit der Bestätigung überein - empty: muss ausgefüllt werden - equal_to: muss genau %{count} sein - even: muss gerade sein - exclusion: ist nicht verfügbar - greater_than: muss größer als %{count} sein - greater_than_or_equal_to: muss größer oder gleich %{count} sein - inclusion: ist kein gültiger Wert - invalid: ist nicht gültig - less_than: muss kleiner als %{count} sein - less_than_or_equal_to: muss kleiner oder gleich %{count} sein - not_a_number: ist keine Zahl - not_an_integer: muss ganzzahlig sein - odd: muss ungerade sein - record_invalid: ! 'Gültigkeitsprüfung ist fehlgeschlagen: %{errors}' - taken: ist bereits vergeben - taken_with_deleted: ist bereits vergeben (eine gelöschte Gruppe) - too_long: ist zu lang (nicht mehr als %{count} Zeichen) - too_short: ist zu kurz (nicht weniger als %{count} Zeichen) - wrong_length: hat die falsche Länge (muss genau %{count} Zeichen haben) - template: - body: ! 'Bitte überprüfen Sie die folgenden Felder:' - header: - one: ! 'Konnte %{model} nicht speichern: ein Fehler.' - other: ! 'Konnte %{model} nicht speichern: %{count} Fehler.' feedback: create: notice: Das Feedback wurde erfolgreich verschickt. Vielen Dank! @@ -691,6 +606,7 @@ de: group_order_articles: form: amount_change_for: Mengenänderung für %{article} + result_hint: 'Einheit: %{unit}' index: amount: Betrag amount_fc: Betrag(FC) @@ -727,6 +643,7 @@ de: order_articles: edit: title: Artikel aktualisieren + stock_alert: Preise von Lagerartikeln können nicht geändert werden! new: title: Neuer gelieferter Artikel die Bestellung ordergroups: @@ -891,15 +808,11 @@ de: option_choose: Lieferantin/Lager auswählen option_stock: Lager order_pdf: PDF erstellen - select: - prompt: Bitte wählen submit: - create: ! '%{model} speichern' invite: create: Einladung verschicken message: create: Nachricht verschicken - update: Änderungen speichern tasks: required_users: Es fehlen %{count} Mitstreiterinnen! home: @@ -989,6 +902,9 @@ de: action: Einlading abschicken body:
Hier kannst du eine Person in die Gruppe %{group} einladen, die noch nicht Mitglied der Foodcoop ist.
success: Benutzerin wurde erfolgreich eingeladen. + js: + ordering: + confirm_change: Änderungen an dieser Bestellung gehen verloren, wenn zu einer anderen Bestellung gewechselt wird. Möchtest Du trotzdem wechseln? layouts: application1: title: Foodsoft - %{title} @@ -1233,57 +1149,6 @@ de: home: Startseite title: Wiki workgroups: Arbeitsgruppen - number: - currency: - format: - delimiter: . - format: ! '%n %u' - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - unit: € - format: - delimiter: . - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - human: - decimal_units: - format: ! '%n %u' - units: - billion: - one: Milliarde - other: Milliarden - million: Millionen - quadrillion: - one: Billiarde - other: Billiarden - thousand: Tausend - trillion: Billionen - unit: - format: - delimiter: - precision: 1 - significant: true - strip_insignificant_zeros: true - storage_units: - format: ! '%n %u' - units: - byte: - one: Byte - other: Bytes - gb: GB - kb: KB - mb: MB - tb: TB - percentage: - format: - delimiter: - precision: - format: - delimiter: ordergroups: edit: title: Bestellgruppe bearbeiten @@ -1308,7 +1173,6 @@ de: fax: amount: Menge articles: Artikel - customer_number: Kundennummer delivery_day: Liefertag heading: Bestellung für %{name} name: Name @@ -1562,74 +1426,6 @@ de: required_users: Wieviel Benutzerinnen werden insgesamt benötigt? tax: In Prozent, Standard sind 7,0 labels: - article: - article_category: Kategorie - manufacturer: Produzent - name: Name - note: Notiz - origin: Herkunft - unit: Einheit - article_category: - description: Beschreibung - name: Name - defaults: - amount: Betrag - date: Datum - deposit: Pfand - description: Beschreibung - email: E-Mail - note: Notiz - order_number: Bestellnummer - ordergroup: Bestellgruppe - password: Passwort - password_confirmation: Passwort wiederholen - phone: Telefon - price: Preis (netto) - tax: MwSt - title: Titel - unit_quantity: Gebindegröße - user_tokens: Mitglieder - delivery: - delivered_on: Lieferdatum - supplier: Lieferantin - group_order_article: - ordergroup_id: Bestellgruppe - result: Menge - invoice: - amount: Betrag - date: Rechnungsdatum - delivery: Lieferung - deposit: Pfand berechnet - deposit_credit: Pfand gutgeschrieben - note: Notiz - number: Nummer - order: Bestellung - paid_on: Bezahlt am - supplier: Lieferant - message: - body: Inhalt - group_id: Gruppe - private: Privat - recipient_tokens: Empfänger_innen - sent_to_all: An alle Mitglieder schicken - subject: Betreff - order: - ends: Endet am - starts: Läuft vom - order_article: - units_to_order: Menge - update_current_price: Globalen Preis aktualisieren - order_comment: - text: Kommentiere diese Bestellung ... - ordergroup: - contact_address: Adresse - contact_person: Kontaktperson - contact_phone: Telefon - ignore_apple_restriction: Bestellstop bei zu wenig Äpfeln ignorieren - name: Name - page: - body: Inhalt - parent_id: Oberseite settings: messages: send_as_email: Bekomme Nachrichten als Emails. @@ -1645,48 +1441,6 @@ de: settings_group: messages: Nachrichten privacy: Privatsphäre - stock_article: - supplier: Lieferant - supplier: - address: Adresse - contact_person: Ansprechparter_in - customer_number: Kundennummer - delivery_days: Liefertage - email: Email - fax: FAX - is_subscribed: abonniert? - min_order_quantity: Mindestbestellmenge - name: Name - note: Notiz - order_howto: Howto Bestellen - phone: Telefon - phone2: Telefon 2 - url: Homepage - task: - done: Erledigt? - due_date: Wann erledigen? - duration: Dauer - name: Name - required_users: Anzahl - user_list: Verantwortliche - workgroup: Arbeitsgruppe - user: - email: Email - last_name: Nachname - name: Name - nick: Benutzername - ordergroup: Bestellgruppe - phone: Telefon - workgroup: - one: Arbeitsgruppe - other: Arbeitsgruppen - workgroup: - next_weekly_tasks_number: Für wieviel Wochen im Voraus sollen Aufgaben erstellt werden? - role_admin: Administration - role_article_meta: Artikeldatenbank - role_finance: Finanzen - role_orders: Bestellverwaltung - role_suppliers: Lieferanten 'no': Nein options: settings: @@ -1809,11 +1563,6 @@ de: show_deliveries: Zeige alle Lieferungen update: notice: Lieferant wurde aktualisiert - support: - array: - last_word_connector: ! ' und ' - two_words_connector: ! ' und ' - words_connector: ! ', ' tasks: accept: notice: Du hast die Aufgabe übernommen @@ -1868,9 +1617,9 @@ de: notice: Aufgabenstatus wurde aktualisiert show: accept_task: Aufgabe übernehmen + confirm_delete_single: Die Aufgabe wirklich löschen? confirm_delete_group: Diese und alle folgenden wöchentlichen Aufgaben wirklich löschen? delete_group: Aufgabe und folgende löschen - due_date: Fälligkeitsdatum hours: ! '%{count}h' mark_done: Als erledigt markieren reject_task: Aufgabe ablehnen @@ -1887,13 +1636,6 @@ de: workgroup: title: Aufgaben für %{workgroup} title_all: Alle Aufgaben der Gruppe - time: - am: vormittags - formats: - default: ! '%A, %d. %B %Y, %H:%M Uhr' - long: ! '%A, %d. %B %Y, %H:%M Uhr' - short: ! '%d. %B, %H:%M Uhr' - pm: nachmittags ui: close: Schließen delete: Löschen diff --git a/config/locales/en.yml b/config/locales/en.yml index f7d04466..b162d0fe 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,103 +1,142 @@ en: - activemodel: - errors: - format: ! '%{attribute} %{message}' - general: A problem has occured. - general_again: A problem has occured. Please try again. - general_msg: ! 'A problem has occured: %{msg}' - messages: - accepted: has to be accepted - blank: has to be entered - confirmation: does not match the confirmation - empty: has to be entered - equal_to: has to be exactly %{count} - even: has to be an even number - exclusion: is not available - greater_than: has to be greater than %{count} - greater_than_or_equal_to: has to be greater than or equal to %{count} - inclusion: is not a valid value - invalid: is invalid - less_than: has to be less than %{count} - less_than_or_equal_to: has to be less than or equal to %{count} - not_a_number: is not a number - not_an_integer: must be a whole number - odd: must be odd - record_invalid: ! 'validation failed: %{errors}' - taken: is already taken - taken_with_deleted: is already taken (deleted group) - too_long: is too long (no more than %{count} characters) - too_short: is too short (use more than %{count} characters) - wrong_length: is the wrong length (has to have exactly %{count} characters) - template: - body: ! 'Please check the following fields:' - header: - one: ! 'Could not save %{model}: an error.' - other: ! 'Could not save %{model}: %{count} errors.' activerecord: attributes: article: - article_category: article category + article_category: Category availability: Is article available? - deposit: deposit - fc_price: FC price - fc_share: FC share - gross_price: gross price - name: name - note: note - price: price - supplier: supplier + availability_short: avail. + deposit: Deposit + fc_price: FoodCoop price + fc_price_short: FC price + fc_share: FoodCoop margin + fc_share_short: FC margin + gross_price: Gross price + manufacturer: Manufacturer + name: Name + note: Note + order_number: Order number + origin: Origin + price: Price (net) + supplier: Supplier tax: VAT - unit: unit - unit_quantity: unit quantity + unit: Unit + unit_quantity: Unit quantity + unit_quantity_short: U.Q. + article_category: + description: Description + name: Name + delivery: + delivered_on: Delivery date + note: Note + supplier: Supplier financial_transaction: amount: amount note: note + group_order_article: + ordergroup_id: Ordergroup + result: Amount + invoice: + amount: Amount + date: Billing date + delivery: Delivery + deposit: Deposit charged + deposit_credit: Deposit returned + note: Note + number: Number + order: Order + paid_on: Paid on + supplier: Supplier + message: + body: Body + group_id: Group + private: Private + recipient_tokens: Recipients + sent_to_all: Send to all members + subject: Subject + order: + ends: Ends at + note: Note + starts: Starts at + order_article: + units_to_order: Amount of units + update_current_price: Globally update current price + order_comment: + text: Add comment to this order ... + ordergroup: + contact_address: Address + contact_person: Contact person + contact_phone: Phone + description: Description + ignore_apple_restriction: Ignore order stop by apple points restriction + name: Name + user_tokens: Members + page: + body: Body + parent_id: Parent page + title: Title stock_article: - price: price - quantity: quantity - quantity_available: available quantity + price: Price + quantity: Quantity + quantity_available: Available quantity + supplier: Supplier + stock_taking: + date: Date + note: Note + supplier: + address: Address + contact_person: Contact person + customer_number: Customer number + customer_number_short: Cust.nr. + delivery_days: Delivery days + email: Email + fax: Fax + is_subscribed: subscribed? + min_order_quantity: Minimum order quantity + name: Name + note: Note + order_howto: How to order + phone: Phone + phone2: Phone 2 + url: Homepage + task: + description: Description + done: Done? + due_date: Due date + duration: Duration + name: Name + required_users: People required + user_list: Responsible user + workgroup: Workgroup user: + email: Email first_name: First name + last_name: Last name + name: Name + nick: Username + ordergroup: Ordergroup password: Password + password_confirmation: Repeat password + phone: Telephone + workgroup: + one: Workgroup + other: Workgroups + workgroup: + name: Name + description: Description + next_weekly_tasks_number: For how many weeks in advance would you like to define tasks? + role_admin: Administration + role_article_meta: Article database + role_finance: Finances + role_orders: Order management + role_suppliers: Suppliers + user_tokens: Members errors: - format: ! '%{attribute} %{message}' - general: A problem has occured. - general_again: A problem has occured. Please try again. - general_msg: ! 'A problem has occured: %{msg}' has_many_left: is still associated with a %{collection}! - messages: - accepted: has to be accepted - blank: has to be filled - confirmation: does not match the confirmation - empty: has to be entered - equal_to: has to be exactly %{count} - even: has to be an even number - exclusion: is not available - greater_than: has to be greater than %{count} - greater_than_or_equal_to: has to be greater than or equal to %{count} - inclusion: is not a valid value - invalid: is invalid - less_than: has to be less than %{count} - less_than_or_equal_to: has to be less than or equal to %{count} - not_a_number: is not a number - not_an_integer: must be a whole number - odd: must be odd - record_invalid: ! 'validation failed: %{errors}' - taken: is already taken - taken_with_deleted: is already taken (deleted group) - too_long: is too long (no more than %{count} characters) - too_short: is too short (use more than %{count} characters) - wrong_length: is the wrong length (has to have exactly %{count} characters) models: task: attributes: done: exclusion: finished tasks may not be repeated weekly - template: - body: ! 'Please check the following fields:' - header: - one: ! 'Could not save %{model}: an error.' - other: ! 'Could not save %{model}: %{count} errors.' models: article: Article article_category: Article category @@ -318,6 +357,7 @@ en: title: Upload articles sync: outlist: + alert_used: Warning, %{article} is used in an open order. Please remove it from the order first. body: ! 'The following articles were removed from the list and will be deleted:' body_skip: No articles to delete. title: Remove from list ... @@ -340,102 +380,6 @@ en: file_label: Please choose a compatible file submit: Upload file title: ! '%{supplier} / upload articles' - date: - abbr_day_names: - - Su - - Mo - - Tu - - We - - Th - - Fr - - Sa - abbr_month_names: - - - - Jan - - Feb - - Mar - - Apr - - May - - Jun - - Jul - - Aug - - Sep - - Oct - - Nov - - Dec - day_names: - - Sunday - - Monday - - Tuesday - - Wednesday - - Thursday - - Friday - - Saturday - formats: - default: ! '%d/%m/%Y' - long: ! '%e %B %Y' - short: ! '%e %b' - month_names: - - - - January - - February - - March - - April - - May - - June - - July - - August - - September - - October - - November - - December - order: - - :day - - :month - - :year - datetime: - distance_in_words: - about_x_hours: - one: about one hour - other: about %{count} hours - about_x_months: - one: about one month - other: about %{count} months - about_x_years: - one: about one year - other: about %{count} years - almost_x_years: - one: almost one year - other: almost %{count} years - half_a_minute: half a minute - less_than_x_minutes: - one: less than one minute - other: less then %{count} minutes - less_than_x_seconds: - one: less than a second - other: less than %{count} seconds - over_x_years: - one: more then a year - other: more than %{count} year - x_days: - one: one day - other: ! '%{count} days' - x_minutes: - one: one minute - other: ! '%{count} minutes' - x_months: - one: one month - other: ! '%{count} months' - x_seconds: - one: eine Sekunde - other: ! '%{count} seconds' - prompts: - day: day - hour: hours - minute: minutes - month: months - second: seconds - year: years deliveries: add_stock_change: how_many_units: ! 'How many units (%{unit}) to deliver? Stock article name: %{name}.' @@ -537,38 +481,9 @@ en: one: One article in total other: ! '%{count} articles in total' errors: - format: ! '%{attribute} %{message}' general: A problem has occured. general_again: A problem has occured. Please try again. general_msg: ! 'A problem has occured: %{msg}' - messages: - accepted: has to be accepted - blank: has to be filled - confirmation: does not match the confirmation - empty: has to be entered - equal_to: has to be exactly %{count} - even: has to be an even number - exclusion: is not available - greater_than: has to be greater than %{count} - greater_than_or_equal_to: has to be greater than or equal to %{count} - inclusion: is not a valid value - invalid: is invalid - less_than: has to be less than %{count} - less_than_or_equal_to: has to be less than or equal to %{count} - not_a_number: is not a number - not_an_integer: must be a whole number - odd: must be odd - record_invalid: ! 'validation failed: %{errors}' - taken: is already taken - taken_with_deleted: is already taken (deleted group) - too_long: is too long (no more than %{count} characters) - too_short: is too short (use more than %{count} characters) - wrong_length: is the wrong length (has to have exactly %{count} characters) - template: - body: ! 'Please check the following fields:' - header: - one: ! 'Could not save %{model}: an error.' - other: ! 'Could not save %{model}: %{count} errors.' feedback: create: notice: Your feedback was sent successfully. Thanks a lot! @@ -695,6 +610,7 @@ en: group_order_articles: form: amount_change_for: Change amount for %{article} + result_hint: 'Unit: %{unit}' index: amount: Amount amount_fc: Amount(FC) @@ -895,15 +811,11 @@ en: option_choose: Choose supplier/stock option_stock: Stock order_pdf: Create PDF - select: - prompt: please select submit: - create: save %{model} invite: create: send invitation message: create: send message - update: save changes tasks: required_users: ! '%{count} members are still needed!' home: @@ -993,6 +905,9 @@ en: action: Send invite body:Here you can add a person to the group %{group}, who is not yet a member of the foodcoop.
success: User was invited successfully. + js: + ordering: + confirm_change: Modifications to this order will be lost when you change the order. Do you want to lose the changes you made and continue? layouts: application1: title: Foodsoft - %{title} @@ -1237,57 +1152,6 @@ en: home: Home title: Wiki workgroups: Workgroups - number: - currency: - format: - delimiter: . - format: ! '%n %u' - precision: 2 - separator: . - significant: false - strip_insignificant_zeros: false - unit: € - format: - delimiter: . - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - human: - decimal_units: - format: ! '%n %u' - units: - billion: - one: billion - other: billions - million: million - quadrillion: - one: quadrillion - other: quadrillions - thousand: thousand - trillion: trillion - unit: - format: - delimiter: - precision: 1 - significant: true - strip_insignificant_zeros: true - storage_units: - format: ! '%n %u' - units: - byte: - one: byte - other: bytes - gb: GB - kb: KB - mb: MB - tb: TB - percentage: - format: - delimiter: - precision: - format: - delimiter: ordergroups: edit: title: Edit ordergroups @@ -1312,7 +1176,6 @@ en: fax: amount: Amount articles: Articles - customer_number: Customer number delivery_day: Delivery day heading: Order for %{name} name: Name @@ -1566,74 +1429,6 @@ en: required_users: How many users will be needed in total? tax: In percentage, standard is 7,0 labels: - article: - article_category: Category - manufacturer: Manufacturer - name: Name - note: Note - origin: Origin - unit: Unit - article_category: - description: Description - name: Name - defaults: - amount: Amount - date: Date - deposit: Deposit - description: Description - email: Email - note: Note - order_number: Order number - ordergroup: Ordergroup - password: Password - password_confirmation: Repeat password - phone: Phone - price: Price (net) - tax: VAT - title: Title - unit_quantity: Unit quantity - user_tokens: Members - delivery: - delivered_on: Delivery date - supplier: Supplier - group_order_article: - ordergroup_id: Ordergroup - result: Amount - invoice: - amount: Amount - date: Billing date - delivery: Delivery - deposit: Deposit charged - deposit_credit: Deposit returned - note: Note - number: Number - order: Order - paid_on: Paid on - supplier: Supplier - message: - body: Body - group_id: Group - private: Private - recipient_tokens: Recipients - sent_to_all: Send to all members - subject: Subject - order: - ends: Ends at - starts: Starts at - order_article: - units_to_order: Amount of units - update_current_price: Globally update current price - order_comment: - text: Add comment to this order ... - ordergroup: - contact_address: Address - contact_person: Contact person - contact_phone: Phone - ignore_apple_restriction: Ignore order stop by apple points restriction - name: Name - page: - body: Body - parent_id: Parent page settings: messages: send_as_email: Receive messages as emails. @@ -1649,48 +1444,6 @@ en: settings_group: messages: Messages privacy: Privacy - stock_article: - supplier: Supplier - supplier: - address: Address - contact_person: Contact person - customer_number: Customer ID - delivery_days: Delivery days - email: Email - fax: Fax - is_subscribed: subscribed? - min_order_quantity: Minimum order quantity - name: Name - note: Note - order_howto: How to order - phone: Phone - phone2: Phone 2 - url: Homepage - task: - done: Done? - due_date: Due date - duration: Duration - name: Name - required_users: People required - user_list: Responsible user - workgroup: Workgroup - user: - email: Email - last_name: Last name - name: Name - nick: Username - ordergroup: Ordergroup - phone: Telephone - workgroup: - one: Workgroup - other: Workgroups - workgroup: - next_weekly_tasks_number: For how many weeks in advance would you like to define tasks? - role_admin: Administration - role_article_meta: Article database - role_finance: Finances - role_orders: Order management - role_suppliers: Suppliers 'no': 'No' options: settings: @@ -1813,11 +1566,6 @@ en: show_deliveries: Show all deliveries update: notice: Supplier was updated - support: - array: - last_word_connector: ! ' and ' - two_words_connector: ! ' and ' - words_connector: ! ', ' tasks: accept: notice: You have accepted the task @@ -1872,9 +1620,9 @@ en: notice: The state of the task has been updated show: accept_task: Accept task + confirm_delete_single: Are you sure you want to delete the task? confirm_delete_group: Really delete this and all subsequent tasks? delete_group: Delete task and subsequent - due_date: Due date hours: ! '%{count}h' mark_done: Mark task as done reject_task: Reject task @@ -1891,13 +1639,6 @@ en: workgroup: title: Tasks for %{workgroup} title_all: All group tasks - time: - am: morning - formats: - default: ! '%A, %d %B %Y, %H:%M' - long: ! '%A, %d %B %Y, %H:%M' - short: ! '%d %B, %H:%M' - pm: afternoon ui: close: Close delete: Delete diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 9fcefb99..463ecafc 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,103 +1,132 @@ fr: - activemodel: - errors: - format: ! '%{attribute} %{message}' - general: Un problème a été rencontré. - general_again: Une erreur s'est produite. Merci de réessayer. - general_msg: ! 'Une erreur s''est produite: %{msg}' - messages: - accepted: doit obligatoirement être accepté - blank: doit obligatoirement être complété - confirmation: ne correspond pas avec le champ de confirmation - empty: doit obligatoirement être complété - equal_to: doit obligatoirement être égal à %{count} - even: doit obligatoirement être pair - exclusion: n'est pas disponible - greater_than: doit obligatoirement être supérieur à %{count} - greater_than_or_equal_to: doit obligatoirement être supérieur ou égal à %{count} - inclusion: n'est pas une valeur valide - invalid: n'est pas valide - less_than: doit obligatoirement être inférieur à %{count} - less_than_or_equal_to: doit obligatoirement être inférieur à %{count} - not_a_number: n'est pas un nombre - not_an_integer: doit être un nombre entier - odd: doit obligatoirement être impair - record_invalid: ! 'la vérification a échoué: %{errors}' - taken: a déjà été attribué - taken_with_deleted: a déjà été attribué (à une cellule supprimée depuis) - too_long: est trop long (%{count} signes autorisés au maximum) - too_short: est trop court (%{count} signes au minimum doivent être présents) - wrong_length: n'est pas de la bonne longueur (exactement %{count} signes doivent être présents) - template: - body: ! 'Merci de contrôler le contenu des champs suivants:' - header: - one: ! '%{model} n''a pas pu être sauvegardé à cause de la présence d''une erreur.' - other: ! '%{model} n''a pas pu être sauvegardé car %{count} erreurs ont été trouvées.' activerecord: attributes: article: - article_category: catégorie + article_category: Catégorie availability: l'article est-il disponible? - deposit: consigne - fc_price: prix final - fc_share: supplément boufcoop - gross_price: prix brut - name: - note: - price: prix net + deposit: Consigne + fc_price: Prix final + fc_share: Supplément boufcoop + gross_price: Prix brut + manufacturer: ProductRICE_eur + name: Nom + note: Note + order_number: ! 'Numéro ' + origin: Lieu de production + price: Prix net supplier: tax: TVA - unit: unité - unit_quantity: unités par lot + unit: Unité + unit_quantity: Unités par lot + article_category: + description: Description + name: Nom + delivery: + delivered_on: Date de réapprovisionnement + supplier: Fournisseuse_r financial_transaction: amount: montant note: note + group_order_article: + ordergroup_id: Cellul + result: Quantité + invoice: + amount: Montant + date: Date de facturation + delivery: Réapprovisionnement + deposit: Consigne facturée + deposit_credit: Consigne remboursée + note: Note + number: Numéro + order: Commande + paid_on: Payée le + supplier: Fournisseuse_r + message: + body: Contenu + group_id: Cellule ou équipe + private: Privé + recipient_tokens: Destinataires + sent_to_all: Envoyer à tous les membres + subject: Sujet + order: + ends: Clôture le + starts: Ouverture le + order_article: + units_to_order: Quantité + update_current_price: Mettre à jour le prix global + order_comment: + text: Commenter cette commande... + ordergroup: + contact_address: Adresse + contact_person: Personne à contacter + contact_phone: Téléphone + description: Description + ignore_apple_restriction: Pour cette cellule, ne pas bloquer les commandes en cas de manque de glands + name: Nom + user_tokens: Membres + page: + body: Contenu + parent_id: Page parente + title: Titre stock_article: price: Prix net quantity: quantity_available: + supplier: FournisseurE + supplier: + address: Adresse + contact_person: Contact + customer_number: Numéro de client de la coop + delivery_days: Jours de livraison + email: Email + fax: Fa + is_subscribed: abonné? + min_order_quantity: Quantité minimale à commander + name: Nom + note: Note + order_howto: Comment commander + phone: Téléphone + phone2: Autre téléphone + url: Site web + task: + description: Description + done: Fait? + due_date: Echéance + duration: Durée + name: Nom + required_users: Nombre de personnes nécessaires + user_list: Responsables inscritEs + workgroup: Équipe user: + email: Email first_name: Prénom + last_name: Nom de famille + name: Nom + nick: Identifiant + ordergroup: Cellule password: Mot de passe + password_confirmation: Confirmation du mot de passe + phone: Téléphone + workgroup: + one: Équipe + other: Équipes + workgroup: + name: Nom + description: Description + next_weekly_tasks_number: Combien de temps en avance les boulots doivent ils être annoncés sur le site? + role_admin: Administration + role_article_meta: Base de données des articles + role_finance: Trésorerie + role_orders: Gestion des commandes + role_suppliers: Contact avec les fournisseusEs_rs + user_tokens: Membres errors: - format: ! '%{attribute} %{message}' - general: Une problème a été rencontré. - general_again: Une erreur s'est produite. Merci de réessayer. - general_msg: ! 'Un problème a été rencontré: %{msg}' has_many_left: est encore associé à une %{collection}! - messages: - accepted: doit obligatoirement être accepté - blank: doit obligatoirement être complété - confirmation: ne correspond pas au champ de confirmation - empty: doit obligatoirement être complété - equal_to: doit obligatoirement être égal à %{count} - even: doit être un nombre pair - exclusion: n'est pas disponible - greater_than: doit obligatoirement être supérieur à %{count} - greater_than_or_equal_to: doit obligatoirement être supérieur ou égal à %{count} - inclusion: n'est pas un valeur valide - invalid: est invalide - less_than: doit obligatoirement être inférieur à %{count} - less_than_or_equal_to: doit obligatoirement être inférieur ou égal à %{count} - not_a_number: n'est pas un nombre - not_an_integer: doit obligatoirement être un nombre entier - odd: doit obligaroirement être un nombre impair - record_invalid: ! 'la vérification a échoué: %{errors}' - taken: a déjà été attribué - taken_with_deleted: a déjà été attribué (à une cellule supprimée depuis) - too_long: est trop long (au maximum %{count} signes sont autorisés) - too_short: est trop court (au minimum %{count} signes doivent être présents) - wrong_length: n'a pas la bonne longueur (exactement %{count} signes doivent être présents) models: task: attributes: done: exclusion: répétition hebdomadaire invalide pour un boulot déjà effectué - template: - body: ! 'Merci de vérifier le contenu des champs suivants:' - header: - one: ! '%{model} n''a pu être sauvegardé à cause de la présence d''une erreur.' - other: ! '%{model} n''a pu être sauvegardé à cause de %{count} erreurs.' models: article: Article article_category: la nouvelle catégorie @@ -344,102 +373,6 @@ fr: file_label: Merci de choisir un fichier compatible submit: Transférer le fichier title: ! '%{supplier} / Transférer les données sur l''article' - date: - abbr_day_names: - - Lun - - Mar - - Mer - - Jeu - - Ven - - Sam - - Dim - abbr_month_names: - - - - Janvier - - Février - - Mars - - Avril - - Mai - - Juin - - Juillet - - Août - - Septembre - - Octobre - - Novembre - - Décembre - day_names: - - Dimanche - - Lundi - - Mardi - - Mercredi - - Jeudi - - Vendredi - - Samedi - formats: - default: ! '%d.%m.%Y' - long: ! '%e.%B %Y' - short: ! '%e. %b' - month_names: - - - - Janvier - - Février - - Mars - - Avril - - Mai - - Juin - - Juillet - - Août - - Septembre - - Octobre - - Novembre - - Décembre - order: - - :day - - :month - - :year - datetime: - distance_in_words: - about_x_hours: - one: environ une heure - other: environ %{count} heures - about_x_months: - one: environ un mois - other: environ %{count} mois - about_x_years: - one: environ un an - other: environ %{count} ans - almost_x_years: - one: presque un an - other: presque %{count} ans - half_a_minute: une demi-minute - less_than_x_minutes: - one: moins d'une minute - other: moins de %{count} minutes - less_than_x_seconds: - one: moins d'une seconde - other: moins de %{count} secondes - over_x_years: - one: plus d'un an - other: plus de %{count} ans - x_days: - one: un jour - other: ! '%{count} jours' - x_minutes: - one: une minute - other: ! '%{count} minutes' - x_months: - one: un mois - other: ! '%{count} mois' - x_seconds: - one: une seconde - other: ! '%{count} secondes' - prompts: - day: jour - hour: heures - minute: minute - month: mois - second: secondes - year: an deliveries: add_stock_change: how_many_units: Combien d unités (%{unit}) de l article %{name} doivent-elles être livrées? @@ -500,6 +433,7 @@ fr: filename: Commande %{name}-%{date} - Trier par rows: - Cellule + - - Quantité - Prix title: ! 'Ordre des articles pour la commande: %{name}, close le %{date}' @@ -523,6 +457,7 @@ fr: - Nom - Nombre de lots - Unité + - Prix/Unité - Prix unitaire total: order_matrix: @@ -539,38 +474,9 @@ fr: one: Un seul article other: ! '%{count} articles au total' errors: - format: ! '%{attribute} %{message}' general: Un problème a été rencontré. general_again: Une erreur s'est produite. Merci de réessayer. general_msg: ! 'Une erreur s''est produite: %{msg}' - messages: - accepted: doit obligatoirement être accepté - blank: doit obligatoirement être complété - confirmation: ! ' ne correspond pas au champ de confirmatio' - empty: doit obligatoirement être complété - equal_to: doit obligatoirement être égal à %{count} - even: doit obligatoirement être un nombre pair - exclusion: n'est pas disponible - greater_than: doit obligatoirement être supérieur à %{count} - greater_than_or_equal_to: doit obligatoirement être supérieur ou égal à %{count} - inclusion: n'est pas une valeur valide - invalid: n'est pas valide - less_than: doit obligatoirement être inférieur à %{count} - less_than_or_equal_to: doit obligatoirement être inférieur ou égal à %{count} - not_a_number: n'est pas un nombre - not_an_integer: doit obligatoirement être un nombre entier - odd: doit obligatoirement être un nombre impair - record_invalid: ! 'La vérification a échoué: %{errors}' - taken: a déjà été attribué - taken_with_deleted: a déjà été attribué (à une cellule supprimée depuis) - too_long: est trop long (au maximum %{count} signes sont autorisés) - too_short: est trop court (au minimum %{count} signes doivent être présents) - wrong_length: n'a pas la bonne longueur (exactement %{count} signes doivent être présents) - template: - body: ! 'Merci de contrôler le contenu des champs suivants:' - header: - one: ! '%{model} n''a pas pu être sauvegardé: une erreur trouvée.' - other: ! '%{model} n''a pas pu être sauvegardé: %{count} erreurs trouvées.' feedback: create: notice: Ton commentaire a été transmis avec succès. Merci @@ -909,15 +815,11 @@ fr: option_choose: Choix d'unE fournisseusE_r option_stock: Stock order_pdf: Générer un PDF - select: - prompt: Faire un choix submit: - create: Définir %{model} invite: create: Envoyer une invitatio message: create: Envoyer un message - update: Sauvergarder les modifications tasks: required_users: Il manque encore %{count} camarades! home: @@ -1240,57 +1142,6 @@ fr: home: Page d'accueil title: Wiki workgroups: Équipes - number: - currency: - format: - delimiter: . - format: ! '%n %u' - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - unit: € - format: - delimiter: . - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - human: - decimal_units: - format: ! '%n %u' - units: - billion: - one: milliard - other: milliards - million: millions - quadrillion: - one: billiard - other: billiards - thousand: mille - trillion: billions - unit: - format: - delimiter: - precision: 1 - significant: true - strip_insignificant_zeros: true - storage_units: - format: ! '%n %u' - units: - byte: - one: Octet - other: Octets - gb: Go - kb: kB - mb: MB - tb: TB - percentage: - format: - delimiter: - precision: - format: - delimiter: ordergroups: edit: title: Modifier les cellules @@ -1315,7 +1166,6 @@ fr: fax: amount: Quantité articles: Articles - customer_number: Numéro de client de la coop delivery_day: Jour de livraison heading: Commande pour %{name} name: Nom @@ -1567,74 +1417,6 @@ fr: required_users: De combien de personnes avons-nous besoin au total? tax: En pourcentage, le standard est de 7,0 labels: - article: - article_category: Catégorie - manufacturer: ProductRICE_eur - name: Nom - note: Note - origin: Lieu de production - unit: Unité - article_category: - description: Description - name: Nom - defaults: - amount: Montant - date: Date - deposit: Consigne - description: Description - email: Email - note: Note - order_number: ! 'Numéro ' - ordergroup: Cellule - password: Mot de passe - password_confirmation: Confirmation du mot de passe - phone: Téléphone - price: Prix (net) - tax: TVA - title: Titre - unit_quantity: Unités par lot - user_tokens: Membres - delivery: - delivered_on: Date de réapprovisionnement - supplier: Fournisseuse_r - group_order_article: - ordergroup_id: Cellul - result: Quantité - invoice: - amount: Montant - date: Date de facturation - delivery: Réapprovisionnement - deposit: Consigne facturée - deposit_credit: Consigne remboursée - note: Note - number: Numéro - order: Commande - paid_on: Payée le - supplier: Fournisseuse_r - message: - body: Contenu - group_id: Cellule ou équipe - private: Privé - recipient_tokens: Destinataires - sent_to_all: Envoyer à tous les membres - subject: Sujet - order: - ends: Clôture le - starts: Ouverture le - order_article: - units_to_order: Quantité - update_current_price: Mettre à jour le prix global - order_comment: - text: Commenter cette commande... - ordergroup: - contact_address: Adresse - contact_person: Personne à contacter - contact_phone: Téléphone - ignore_apple_restriction: Pour cette cellule, ne pas bloquer les commandes en cas de manque de glands - name: - page: - body: Contenu - parent_id: Page parente settings: messages: send_as_email: Transmettre les messages de la boufcoop par email @@ -1650,48 +1432,6 @@ fr: settings_group: messages: Messages privacy: Confidentialité - stock_article: - supplier: FournisseurE - supplier: - address: Adresse - contact_person: Contact - customer_number: Numéro de client de la coop - delivery_days: Jours de livraison - email: Email - fax: Fa - is_subscribed: abonné? - min_order_quantity: Quantité minimale à commander - name: Nom - note: Note - order_howto: Comment commander - phone: Téléphone - phone2: Autre téléphone - url: Site web - task: - done: Fait? - due_date: Pour quand? - duration: Durée - name: Nom - required_users: Nombre de personnes nécessaires - user_list: Responsables inscritEs - workgroup: Équipe - user: - email: Email - last_name: Nom de famille - name: Nom - nick: Identifiant - ordergroup: Cellule - phone: Téléphone - workgroup: - one: Équipe - other: Équipes - workgroup: - next_weekly_tasks_number: Combien de temps en avance les boulots doivent ils être annoncés sur le site? - role_admin: Administration - role_article_meta: Base de données des articles - role_finance: Trésorerie - role_orders: Gestion des commandes - role_suppliers: Contact avec les fournisseusEs_rs 'no': Non options: settings: @@ -1820,11 +1560,6 @@ fr: show_deliveries: Afficher tous les réapprovisionnements update: notice: Les données du_de la fournisseurE ont été mises à jour - support: - array: - last_word_connector: et - two_words_connector: et - words_connector: ! ',' tasks: accept: notice: Tu as accepté ce boulot @@ -1885,7 +1620,6 @@ fr: accept_task: Te charger de ce boulot. confirm_delete_group: Veux-tu vraiment supprimer ce boulot hebdomadaire? delete_group: Supprimer ce boulot - due_date: Echéance hours: ! '%{count}h' mark_done: Marquer comme effectué reject_task: Refuser ce boulot @@ -1902,13 +1636,6 @@ fr: workgroup: title: Agenda de l'%{workgroup} title_all: Boulot prévu pour l'équipe - time: - am: le matin - formats: - default: ! '%A, %d. %B %Y, %Hh%M' - long: ! '%A, %d. %B %Y, %Hh%M' - short: ! '%d. %B, %Hh%M ' - pm: après-midi ui: close: Fermer delete: Supprimer diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 501ee0f1..25f54484 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1,103 +1,137 @@ nl: - activemodel: - errors: - format: ! '%{attribute} %{message}' - general: Er is een probleem opgetreden. - general_again: Een probleem is opgetreden. Graag opnieuw proberen. - general_msg: ! 'Een probleem is opgetreden: %{msg}' - messages: - accepted: moet geaccepteerd worden - blank: moet ingevuld worden - confirmation: komt niet overeen - empty: moet ingevuld worden - equal_to: moet precies %{count} zijn - even: moet even zijn - exclusion: is niet beschikbaar - greater_than: moet groter zijn dan %{count} - greater_than_or_equal_to: moet groter dan of gelijk aan %{count} zijn - inclusion: is geen geldige waarde - invalid: is ongeldig - less_than: moet minder zijn dan %{count} - less_than_or_equal_to: moet minder dan of gelijk aan %{count} zijn - not_a_number: is geen getal - not_an_integer: moet een geheel getal zijn - odd: moet oneven zijn - record_invalid: ! 'geldigheidscontrole is mislukt: %{errors}' - taken: bestaat al - taken_with_deleted: bestaat al (verwijderde groep) - too_long: is te lang (niet meer dan %{count} tekens) - too_short: is te kort (niet minder dan %{count} tekens) - wrong_length: heeft de verkeerde lengte (moet precies %{count} tekens hebben) - template: - body: ! 'Controleer de volgende velden:' - header: - one: ! 'Kon %{model} niet opslaan: één fout.' - other: ! 'Kon %{model} niet opslaan: %{count} fouten.' activerecord: attributes: article: - article_category: categorie + article_category: Categorie availability: Artikel leverbaar? - deposit: statiegeld - fc_price: prijs foodcoop - fc_share: marge foodcoop - gross_price: bruto prijs + availability_short: leverb. + deposit: Statiegeld + fc_price: Foodcoop prijs + fc_price_short: FC prijs + fc_share: Foodcoop marge + fc_share_short: FC marge + gross_price: Bruto prijs + manufacturer: Producent name: Naam note: Notitie - price: netto prijs + origin: Herkomst + order_number: Ordernummer + price: Netto prijs supplier: Leverancier tax: BTW - unit: eenheid - unit_quantity: groothandelseenheid + unit: Eenheid + unit_quantity: Groothandelseenheid + unit_quantity_short: Gr.Eenh. + article_category: + description: Omschrijving + name: Naam + delivery: + delivered_on: + note: + supplier: financial_transaction: amount: bedrag note: notitie + group_order_article: + ordergroup_id: + result: + invoice: + amount: Bedrag + date: Factuurdatum + delivery: Levering + deposit: Statiegeld in rekening gebracht + deposit_credit: Statiegeld teruggekregen + note: Notitie + number: Nummer + order: Bestelling + paid_on: Betaald op + supplier: Leverancier + message: + body: + group_id: + private: + recipient_tokens: + sent_to_all: + subject: + order: + ends: Eindigt op + note: Notitie + starts: Start op + order_article: + units_to_order: + update_current_price: + order_comment: + text: Commentaar voor deze bestelling toevoegen ... + ordergroup: + contact_address: Adres + contact_person: Contactpersoon + contact_phone: Telefoon + description: Omschrijving + ignore_apple_restriction: + name: Naam + user_tokens: Leden + page: + body: + parent_id: stock_article: - price: prijs - quantity: - quantity_available: + price: Prijs + quantity: Aantal + quantity_available: Beschikbaar + supplier: Leverancier + supplier: + address: Adres + contact_person: Contactpersoon + customer_number: Klantnummer + delivery_days: Bezorgdagen + email: Email + fax: Fax + is_subscribed: geabonneerd? + min_order_quantity: Minimale bestelhoeveelheid + name: Naam + note: Notitie + order_howto: Hoe te bestellen + phone: Telefoon + phone2: Telefoon 2 + url: Homepage + task: + description: + done: + due_date: + duration: + name: + required_users: + user_list: + workgroup: user: + email: Email first_name: Voornaam + last_name: Achternaam + name: Naam + nick: Gebruikersnaam + ordergroup: Huishouden password: Wachtwoord + password_confirmation: Wachtwoord herhalen + phone: Telefoon + workgroup: + one: Werkgroep + other: Werkgroepen + workgroup: + name: Naam + description: Omschrijving + next_weekly_tasks_number: + role_admin: Beheer + role_article_meta: Artikelen + role_finance: Financiën + role_orders: Bestellingen + role_suppliers: Leveranciers + user_tokens: Leden errors: - format: ! '%{attribute} %{message}' - general: Er is een probleem opgetreden. - general_again: Er is een probleem opgetreden. Probeer het opnieuw. - general_msg: ! 'Er is een probleem opgetreden: %{msg}' has_many_left: is nog met een %{collection} verbonden! - messages: - accepted: moet geaccepteerd worden - blank: moet ingevuld worden - confirmation: komt niet overeen - empty: moet ingevuld worden - equal_to: moet precies %{count} zijn - even: moet even zijn - exclusion: is niet beschikbaar - greater_than: moet groter dan %{count} zijn - greater_than_or_equal_to: moet groter zijn dan of gelijk aan %{count} - inclusion: is geen geldige waarde - invalid: is ongeldig - less_than: moet kleiner izjn dan %{count} - less_than_or_equal_to: moet kleiner zijn dan of gelijk aan %{count} - not_a_number: is geen getal - not_an_integer: moet een geheel getal zijn - odd: moet oneven zijn - record_invalid: ! 'geldigheidscontrole is mislukt: %{errors}' - taken: bestaat al - taken_with_deleted: bestaat al (verwijderde groep) - too_long: is te lang (niet meer dan %{count} tekens) - too_short: is te kort (niet minder dan %{count} tekens) - wrong_length: heeft de verkeerde lengte (moet precies %{count} tekens zijn) models: task: attributes: done: exclusion: gedane taken kunnen niet herhaald worden - template: - body: ! 'Controleer de volgende velden:' - header: - one: ! 'Kon %{model} niet opslaan: één foutmelding.' - other: ! 'Kon %{model} niet opslaan: %{count} foutmeldingen.' models: article: Artikel article_category: Categorie @@ -340,102 +374,6 @@ nl: file_label: Graag een compatibel bestand uitkiezen submit: Bestand uploaden title: Artikelen uploaden voor %{supplier} - date: - abbr_day_names: - - Zo - - Ma - - Di - - Wo - - Do - - Vr - - Za - abbr_month_names: - - - - Jan - - Feb - - Mar - - Apr - - Mei - - Jun - - Jul - - Aug - - Sep - - Okt - - Nov - - Dec - day_names: - - Zondag - - Maandag - - Dinsdag - - Woensdag - - Donderdag - - Vrijdag - - Zaterdag - formats: - default: ! '%d-%m-%Y' - long: ! '%e %B %Y' - short: ! '%e %b' - month_names: - - - - Januari - - Februari - - Maart - - April - - Mei - - Juni - - Juli - - Augustus - - September - - Oktober - - November - - December - order: - - :day - - :month - - :year - datetime: - distance_in_words: - about_x_hours: - one: ca. één uur - other: ca. %{count} uur - about_x_months: - one: ca. één maand - other: ca. %{count} maanden - about_x_years: - one: ca. één jaar - other: ca. %{count} jaar - almost_x_years: - one: bijna één jaar - other: bijna %{count} jaar - half_a_minute: een halve minuut - less_than_x_minutes: - one: minder dan één minuut - other: minder dan %{count} minuten - less_than_x_seconds: - one: minder dan een seconde - other: minder dan %{count} seconden - over_x_years: - one: meer dan één jaar - other: meer dan %{count} jaar - x_days: - one: één dag - other: ! '%{count} dagen' - x_minutes: - one: één minuut - other: ! '%{count} minuten' - x_months: - one: één maand - other: ! '%{count} maanden' - x_seconds: - one: een seconde - other: ! '%{count} seconden' - prompts: - day: dag - hour: uren - minute: minuten - month: maanden - second: seconden - year: jaren deliveries: add_stock_change: how_many_units: @@ -496,7 +434,8 @@ nl: filename: Bestelling %{name}-%{date} - Artikellijst rows: - Huishouden - - Hoeveelheid + - Besteld + - Ontvangen - Prijs title: ! 'Artikellijst van bestelling: %{name}, gesloten op %{date}' order_by_groups: @@ -529,44 +468,9 @@ nl: one: In totaal éen artikel other: In totaal %{count} artikelen errors: - format: ! '%{attribute} %{message}' general: Er is een probleem opgetreden. general_again: Er is een fout opgetreden. Probeer het opnieuw. general_msg: ! 'Er is een probleem opgetreden: %{msg}' - messages: - accepted: moet geaccepteerd worden - blank: moet ingevuld worden - confirmation: komt niet overeen met de bevestiging - empty: moet ingevuld worden - equal_to: moet precies %{count} zijn - even: moet even zijn - exclusion: moet even zijn - greater_than: moet groter dan %{count} zijn - greater_than_or_equal_to: moet groter dan of gelijk zijn aan %{count} - inclusion: geen geldige waarde - invalid: is ongeldig - less_than: moet kleiner dan %{count} zijn - less_than_or_equal_to: moet groter of gelijk aan %{count} zijn - not_a_number: is geen getal - not_an_integer: moet een geheel getal zijn - odd: moet oneven zijn - record_invalid: - taken: is al in gebruik - taken_with_deleted: is al in gebruik (verwijderde groep) - too_long: - one: is te lang (niet meer dan éen teken) - other: is te lang (niet meer dan %{count} tekens) - too_short: - one: is te kort (niet minder dan éen teken) - other: is te kort (niet minder dan %{count} tekens) - wrong_length: - one: heeft de verkeerde lengte (moet precies éen zijn) - other: heeft de verkeerde lengte (moet precies %{count} tekens hebben) - template: - body: ! 'Controleer alsjeblieft de volgende velden:' - header: - one: ! 'Kon %{model} niet opslaan: éen fout gevonden.' - other: ! 'Kon %{model} niet opslaan: %{count} fouten gevonden.' feedback: create: notice: Bericht verstuurd. Vriendelijk bedankt! @@ -893,15 +797,11 @@ nl: option_choose: Leverancier/voorraad kiezen option_stock: Voorraad order_pdf: PDF maken - select: - prompt: graag uitkiezen submit: - create: ! '%{model} opslaan' invite: create: uitnodiging versturen message: create: bericht versturen - update: wijzigingen opslaan tasks: required_users: Nog %{count} leden nodig! home: @@ -1174,57 +1074,6 @@ nl: home: Begin title: Wiki workgroups: Werkgroepen - number: - currency: - format: - delimiter: ! ' ' - format: ! '%n %u' - precision: 2 - separator: ! ',' - significant: false - strip_insignificant_zeros: false - unit: € - format: - delimiter: ! ',' - precision: 2 - separator: ! ' ' - significant: false - strip_insignificant_zeros: false - human: - decimal_units: - format: ! '%n %u' - units: - billion: - one: miljard - other: miljard - million: miljoen - quadrillion: - one: biljard - other: biljard - thousand: duizend - trillion: triljoen - unit: - format: - delimiter: - precision: 1 - significant: true - strip_insignificant_zeros: true - storage_units: - format: ! '%n %u' - units: - byte: - one: byte - other: bytes - gb: GB - kb: KB - mb: MB - tb: TB - percentage: - format: - delimiter: - precision: - format: - delimiter: ordergroups: edit: title: Huidhouden bewerken @@ -1249,7 +1098,6 @@ nl: fax: amount: Aantal articles: Artikelen - customer_number: Klantnummer delivery_day: Bezorgdag heading: Bestelling voor %{name} name: Naam @@ -1501,74 +1349,6 @@ nl: required_users: tax: labels: - article: - article_category: Categorie - manufacturer: Producent - name: Naam - note: Notitie - origin: Herkomst - unit: Eenheid - article_category: - description: Omschrijving - name: Naam - defaults: - amount: - date: Datum - deposit: Statiegeld - description: Omschrijving - email: Email - note: Notitie - order_number: Bestelnummer - ordergroup: Huishouden - password: Wachtwoord - password_confirmation: Wachtwoord herhalen - phone: Telefoon - price: Prijs (netto) - tax: BTW - title: Titel - unit_quantity: Groothandelseenheid - user_tokens: Leden - delivery: - delivered_on: - supplier: - group_order_article: - ordergroup_id: - result: - invoice: - amount: Bedrag - date: Factuurdatum - delivery: Levering - deposit: Statiegeld in rekening gebracht - deposit_credit: Statiegeld teruggekregen - note: Notitie - number: Nummer - order: Bestelling - paid_on: Betaald op - supplier: Leverancier - message: - body: - group_id: - private: - recipient_tokens: - sent_to_all: - subject: - order: - ends: Eindigt op - starts: Start op - order_article: - units_to_order: - update_current_price: - order_comment: - text: - ordergroup: - contact_address: Adres - contact_person: Contactpersoon - contact_phone: Telefoon - ignore_apple_restriction: - name: - page: - body: - parent_id: settings: messages: send_as_email: Berichten als emails ontvangen. @@ -1584,48 +1364,6 @@ nl: settings_group: messages: Berichten privacy: Privacy - stock_article: - supplier: - supplier: - address: - contact_person: - customer_number: - delivery_days: Bezorgdagen - email: - fax: - is_subscribed: - min_order_quantity: - name: - note: - order_howto: - phone: - phone2: - url: - task: - done: - due_date: - duration: - name: - required_users: - user_list: - workgroup: - user: - email: Email - last_name: Achternaam - name: Naam - nick: Gebruikersnaam - ordergroup: Huishouden - phone: Telefoon - workgroup: - one: Werkgroep - other: Werkgroepen - workgroup: - next_weekly_tasks_number: - role_admin: - role_article_meta: Artikelbestand - role_finance: Financiën - role_orders: - role_suppliers: Leveranciers 'no': Nee options: settings: @@ -1748,11 +1486,6 @@ nl: show_deliveries: update: notice: Leverancier is bijgewerkt - support: - array: - last_word_connector: - two_words_connector: - words_connector: tasks: accept: notice: Je hebt de taak geaccepteerd @@ -1809,7 +1542,6 @@ nl: accept_task: confirm_delete_group: delete_group: - due_date: hours: mark_done: reject_task: @@ -1826,13 +1558,6 @@ nl: workgroup: title: title_all: - time: - am: morgen - formats: - default: ! '%A, %d %B %Y, %H:%M' - long: ! '%A, %d %B %Y, %H:%M' - short: ! '%d %B, %H:%M' - pm: middag ui: close: Sluiten delete: Verwijder diff --git a/config/locales/overrides.yml b/config/locales/overrides.yml new file mode 100644 index 00000000..e3442417 --- /dev/null +++ b/config/locales/overrides.yml @@ -0,0 +1,17 @@ +# This file contains overrides that do not go through localeapp. +# If there's a key in one language, it forces presence in other languages +# which means that we can't override in specific languages only. This file +# makes that possible. +en: + number: + currency: + format: + unit: ! '€ ' +nl: + number: + currency: + format: + delimiter: ! ' ' + unit: ! '€ ' + format: + delimiter: ! ' ' diff --git a/spec/i18n_spec.rb b/spec/i18n_spec.rb index e07d74b9..b760d124 100644 --- a/spec/i18n_spec.rb +++ b/spec/i18n_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' require 'i18n-spec' -Dir.glob('config/locales/*.yml').each do |locale_file| +Dir.glob('config/locales/??{-*,}.yml').each do |locale_file| describe "#{locale_file}" do it_behaves_like 'a valid locale file', locale_file # We're currently allowing both German and English as source language