Merge pull request #186 from foodcoops/i18n

i18n cleanup
This commit is contained in:
wvengen 2013-10-23 03:39:09 -07:00
commit fc39f9d5c0
40 changed files with 654 additions and 1676 deletions

5
.gitignore vendored
View File

@ -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
.localeapp

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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')));
});
});

View File

@ -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

View File

@ -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]))

View File

@ -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"

View File

@ -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

View File

@ -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 "<acronym title='#{s}'>#{sshort}</acronym>" unless sshort.empty?
end
s
end
# Generates a link to the top of the website
def link_to_top

View File

@ -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|

View File

@ -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

View File

@ -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|

View File

@ -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

View File

@ -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)

View File

@ -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|

View File

@ -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

View File

@ -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'

View File

@ -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'

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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?});

View File

@ -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)

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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.

View File

@ -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
end

View File

@ -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

4
config/i18n-js.yml Normal file
View File

@ -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.*']

View File

@ -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 <b>gelöscht</b>:'
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: <p>Hier kannst du eine Person in die Gruppe <b>%{group}</b> einladen, die noch nicht Mitglied der Foodcoop ist.</p>
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

View File

@ -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 <b>deleted</b>:'
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: <p>Here you can add a person to the group <b>%{group}</b>, who is not yet a member of the foodcoop.</p>
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

View File

@ -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

View File

@ -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

View File

@ -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: ! ' '

View File

@ -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