From 7d7197da58faf0b7b385474fe4b531482050e20f Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Fri, 9 Dec 2016 14:31:34 +0000 Subject: [PATCH 01/12] Reordered enterprises submenu --- .../enterprises/controllers/side_menu_controller.js.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee index 913ff59d3e..fa346e100f 100644 --- a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee +++ b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee @@ -6,7 +6,6 @@ angular.module("admin.enterprises") $scope.menu.setItems [ { name: 'primary_details', label: t('primary_details'), icon_class: "icon-home" } - { name: 'users', label: t('users'), icon_class: "icon-user" } { name: 'address', label: t('address'), icon_class: "icon-map-marker" } { name: 'contact', label: t('contact'), icon_class: "icon-phone" } { name: 'social', label: t('social'), icon_class: "icon-twitter" } @@ -20,11 +19,11 @@ angular.module("admin.enterprises") { name: 'inventory_settings', label: t('inventory_settings'), icon_class: "icon-list-ol", show: "enterpriseIsShop()" } { name: 'tag_rules', label: t('tag_rules'), icon_class: "icon-random", show: "enterpriseIsShop()" } { name: 'shop_preferences', label: t('shop_preferences'), icon_class: "icon-shopping-cart", show: "enterpriseIsShop()" } + { name: 'users', label: t('users'), icon_class: "icon-user" } ] $scope.select(0) - $scope.showItem = (item) -> if item.show? $parse(item.show)($scope) From 0a67876815dc61bdf00d833279d5d1e875c66a1d Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Fri, 9 Dec 2016 18:47:16 +0000 Subject: [PATCH 02/12] Update angular-file-uploader-rails to v1.1.6 --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 6e48dd97d5..f8407decdc 100644 --- a/Gemfile +++ b/Gemfile @@ -50,7 +50,7 @@ gem 'gmaps4rails' gem 'spinjs-rails' gem 'rack-ssl', :require => 'rack/ssl' gem 'custom_error_message', :github => 'jeremydurham/custom-err-msg' -gem 'angularjs-file-upload-rails', '~> 1.1.0' +gem 'angularjs-file-upload-rails', '~> 1.1.6' gem 'roadie-rails', '~> 1.0.3' gem 'figaro' gem 'blockenspiel' diff --git a/Gemfile.lock b/Gemfile.lock index 0dc7a067ee..824f8a0c04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -154,7 +154,7 @@ GEM railties (>= 3.1) sprockets (~> 2) tilt - angularjs-file-upload-rails (1.1.0) + angularjs-file-upload-rails (1.1.6) angularjs-rails (1.5.5) ansi (1.4.2) arel (3.0.3) @@ -649,7 +649,7 @@ DEPENDENCIES acts-as-taggable-on (~> 3.4) andand angular-rails-templates (~> 0.2.0) - angularjs-file-upload-rails (~> 1.1.0) + angularjs-file-upload-rails (~> 1.1.6) angularjs-rails (= 1.5.5) atomic awesome_print @@ -737,4 +737,4 @@ RUBY VERSION ruby 2.1.5p273 BUNDLED WITH - 1.12.5 + 1.13.6 From 6d9bae8ef91e2835e2e20c0dbf9b343b107d481a Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Sat, 17 Dec 2016 20:39:13 +0000 Subject: [PATCH 03/12] Checkout layout adjustments for mobile view --- app/views/checkout/_payment.html.haml | 4 ++-- app/views/checkout/_shipping.html.haml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/checkout/_payment.html.haml b/app/views/checkout/_payment.html.haml index 8d387145d5..928578158f 100644 --- a/app/views/checkout/_payment.html.haml +++ b/app/views/checkout/_payment.html.haml @@ -16,7 +16,7 @@ -# TODO render this in Angular instead of server-side -# The problem being how to render the partials .row - .small-6.columns + .small-12.medium-12.large-6.columns - available_payment_methods.each do |method| .row .small-12.columns @@ -34,6 +34,6 @@ .row{"ng-if" => "order.payment_method_id == #{method.id}"} .small-12.columns = render partial: "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method } - .small-12.columns.medium-6.columns.large-6.columns + .small-12.medium-12.large-6.columns #distributor_address.panel{"ng-show" => "Checkout.paymentMethod().description"} %span.pre-wrap {{ Checkout.paymentMethod().description }} diff --git a/app/views/checkout/_shipping.html.haml b/app/views/checkout/_shipping.html.haml index 4e6e63d666..6cba461be0 100644 --- a/app/views/checkout/_shipping.html.haml +++ b/app/views/checkout/_shipping.html.haml @@ -13,7 +13,7 @@ "ng-class" => "{valid: shipping.$valid, open: accordion.shipping}"} = render 'checkout/accordion_heading' - .small-12.columns.medium-6.columns.large-6.columns + .small-12.columns.medium-12.columns.large-6.columns %label{"ng-repeat" => "method in ShippingMethods.shipping_methods"} %input{type: :radio, required: true, @@ -38,7 +38,7 @@ %input{type: :checkbox, "ng-model" => "Checkout.default_ship_address"} = t :checkout_default_ship_address - .small-12.columns.medium-6.columns.large-6.columns + .small-12.columns.medium-12.columns.large-6.columns #distributor_address.panel{"ng-show" => "Checkout.shippingMethod().description"} %span{ style: "white-space: pre-wrap;" }{{ Checkout.shippingMethod().description }} %br/ From f62c5831308d6ba74a42f1af9c9cf00f55ab4c8d Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Jan 2017 16:11:56 +0000 Subject: [PATCH 04/12] uk translation updates --- config/locales/en-GB.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index bda8867858..76cf001e47 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1,4 +1,4 @@ -en-GB: +en_GB: activerecord: attributes: spree/order: @@ -11,7 +11,7 @@ en-GB: Were you a guest last time? Perhaps you need to create an account or reset your password. enterprise_confirmations: enterprise: - confirmed: Thank you, your email address has been confirmed. + confirmed: Thankyou, your email address has been confirmed. not_confirmed: Your email address could not be confirmed. Perhaps you have already completed this step? confirmation_sent: "Confirmation email sent!" confirmation_not_sent: "Could not send a confirmation email." @@ -522,14 +522,14 @@ en-GB: producers_title: Producers producers_headline: Find local producers producers_signup_title: Sign up as a producer - producers_signup_headline: Food producers, empowered. - producers_signup_motivation: Sell your food and tell your stories to diverse new markets. Save time and money on every overhead. We support innovation without the risk. We've levelled the playing field. - producers_signup_send: Join now - producers_signup_enterprise: Enterprise Accounts + producers_signup_headline: Food producers. Meet OFN. + producers_signup_motivation: Sell your food and tell your stories. Save time and money on every overhead. We support innovation without the risk. We're levelling the playing field. + producers_signup_send: Register + producers_signup_enterprise: Why the Open Food Network? producers_signup_studies: Stories from our producers. producers_signup_cta_headline: Join now! - producers_signup_cta_action: Join now - producers_signup_detail: Here's the detail. + producers_signup_cta_action: Register + producers_signup_detail: Got a question? products_item: Item products_description: Description products_variant: Variant @@ -537,7 +537,7 @@ en-GB: products_available: Available? products_producer: "Producer" products_price: "Price" - register_title: Register + register_title: Find out more sell_title: "Register" sell_headline: "Get on the Open Food Network!" sell_motivation: "Showcase your beautiful food." @@ -875,7 +875,7 @@ en-GB: spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for" spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to" spree_admin_overview_action_required: "Action Required" - spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!" + spree_admin_overview_check_your_inbox: "Please check you inbox for further instructions. Thanks!" change_package: "Change Package" spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under" your_profil_live: "Your profile live" From d17f9dc504aaac8fe2a2d00e6558436a75d1d835 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Jan 2017 16:35:01 +0000 Subject: [PATCH 05/12] update --- config/locales/en-GB.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 76cf001e47..92eba244eb 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1,4 +1,4 @@ -en_GB: +en-GB: activerecord: attributes: spree/order: From bd1cd527d38efa5ecba2f725160eb277e2d3e1bd Mon Sep 17 00:00:00 2001 From: elf Pavlik Date: Tue, 3 Jan 2017 20:57:10 -0600 Subject: [PATCH 06/12] configurable google maps api key --- app/views/layouts/darkswarm.html.haml | 2 +- config/application.yml.example | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/darkswarm.html.haml b/app/views/layouts/darkswarm.html.haml index d3f0a78087..6998b99ed7 100644 --- a/app/views/layouts/darkswarm.html.haml +++ b/app/views/layouts/darkswarm.html.haml @@ -13,7 +13,7 @@ %link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"} = yield :scripts - %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry"} + %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry&key=#{ENV['GOOGLE_MAPS_API_KEY']}"} = split_stylesheet_link_tag "darkswarm/all" = javascript_include_tag "darkswarm/all" diff --git a/config/application.yml.example b/config/application.yml.example index 0b1871466b..b3b21c39ad 100644 --- a/config/application.yml.example +++ b/config/application.yml.example @@ -21,3 +21,5 @@ CURRENCY: AUD # # DISCOURSE_URL must be the URL of your Discourse instance. #DISCOURSE_URL: "https://noticeboard.openfoodnetwork.org.au" + +GOOGLE_MAPS_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx From 764c95488c28ed00221ccd68e8e09969fdfac027 Mon Sep 17 00:00:00 2001 From: elf Pavlik Date: Sat, 7 Jan 2017 09:27:37 -0600 Subject: [PATCH 07/12] made api key optional (google maps) --- app/views/layouts/darkswarm.html.haml | 2 +- config/application.yml.example | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/darkswarm.html.haml b/app/views/layouts/darkswarm.html.haml index 6998b99ed7..20a47be970 100644 --- a/app/views/layouts/darkswarm.html.haml +++ b/app/views/layouts/darkswarm.html.haml @@ -13,7 +13,7 @@ %link{href: "https://fonts.googleapis.com/css?family=Roboto:400,300italic,400italic,300,700,700italic|Oswald:300,400,700", rel: "stylesheet", type: "text/css"} = yield :scripts - %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry&key=#{ENV['GOOGLE_MAPS_API_KEY']}"} + %script{src: "//maps.googleapis.com/maps/api/js?libraries=places,geometry#{ ENV['GOOGLE_MAPS_API_KEY'] ? '&key=' + ENV['GOOGLE_MAPS_API_KEY'] : ''} "} = split_stylesheet_link_tag "darkswarm/all" = javascript_include_tag "darkswarm/all" diff --git a/config/application.yml.example b/config/application.yml.example index b3b21c39ad..5b38a6da60 100644 --- a/config/application.yml.example +++ b/config/application.yml.example @@ -22,4 +22,5 @@ CURRENCY: AUD # DISCOURSE_URL must be the URL of your Discourse instance. #DISCOURSE_URL: "https://noticeboard.openfoodnetwork.org.au" -GOOGLE_MAPS_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +# see: https://developers.google.com/maps/documentation/javascript/get-api-key +# GOOGLE_MAPS_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx From 88dea0f2b8c60d846d97dd591000b504d2e171b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Turbelin?= Date: Tue, 13 Dec 2016 16:53:32 +0100 Subject: [PATCH 08/12] Adding i18n keys on Admin side (Rails views) --- app/views/admin/account/show.html.haml | 2 - .../edit.html.haml | 2 +- app/views/admin/cache_settings/show.html.haml | 8 +- app/views/admin/contents/edit.html.haml | 3 +- .../admin/enterprise_fees/index.html.haml | 14 +- .../admin/enterprise_groups/index.html.haml | 2 +- .../admin/enterprises/_actions.html.haml | 16 +- .../admin/enterprises/_admin_index.html.haml | 14 +- .../enterprises/_change_type_form.html.haml | 46 ++-- .../_enterprise_user_index.html.haml | 4 +- .../admin/enterprises/_new_form.html.haml | 63 +++-- .../admin/enterprises/_ng_form.html.haml | 4 +- app/views/admin/enterprises/edit.html.haml | 7 +- .../enterprises/form/_about_us.html.haml | 8 +- .../admin/enterprises/form/_address.html.haml | 21 +- .../form/_business_details.html.haml | 12 +- .../admin/enterprises/form/_contact.html.haml | 16 +- .../form/_enterprise_fees.html.haml | 10 +- .../admin/enterprises/form/_images.html.haml | 10 +- .../form/_inventory_settings.html.haml | 11 +- .../form/_payment_methods.html.haml | 14 +- .../form/_primary_details.html.haml | 54 ++-- .../form/_shipping_methods.html.haml | 12 +- .../form/_shop_preferences.html.haml | 8 +- .../admin/enterprises/form/_social.html.haml | 2 +- .../enterprises/form/_tag_rules.html.haml | 10 +- .../admin/enterprises/form/_users.html.haml | 27 +- .../form/tag_rules/_default_rules.html.haml | 6 +- app/views/admin/enterprises/index.html.haml | 6 +- app/views/admin/enterprises/new.html.haml | 6 +- app/views/admin/enterprises/welcome.html.haml | 8 +- .../order_cycles/_advanced_settings.html.haml | 16 +- .../order_cycles/_coordinator_fees.html.haml | 4 +- app/views/admin/order_cycles/_form.html.haml | 39 ++- .../_name_and_timing_form.html.haml | 8 +- app/views/admin/order_cycles/_row.html.haml | 8 +- .../admin/order_cycles/_simple_form.html.haml | 14 +- app/views/admin/order_cycles/edit.html.haml | 10 +- app/views/admin/order_cycles/index.html.haml | 2 +- app/views/admin/order_cycles/new.html.haml | 2 +- .../admin/producer_properties/_form.html.haml | 4 +- .../admin/producer_properties/index.html.haml | 5 +- .../admin/shared/_user_guide_link.html.haml | 2 +- .../_loading_flash.html.haml | 2 +- .../variant_overrides/_show_more.html.haml | 6 +- config/locales/en.yml | 258 +++++++++++++++++- config/locales/fr.yml | 258 ++++++++++++++++++ 47 files changed, 784 insertions(+), 280 deletions(-) diff --git a/app/views/admin/account/show.html.haml b/app/views/admin/account/show.html.haml index 808402ed16..b052b5b0a0 100644 --- a/app/views/admin/account/show.html.haml +++ b/app/views/admin/account/show.html.haml @@ -1,8 +1,6 @@ - - content_for :page_title do = t(:account) - - if @invoices.empty? %h4= t(:no_invoices_to_display) diff --git a/app/views/admin/accounts_and_billing_settings/edit.html.haml b/app/views/admin/accounts_and_billing_settings/edit.html.haml index 72ce7920a9..83cfbbb76e 100644 --- a/app/views/admin/accounts_and_billing_settings/edit.html.haml +++ b/app/views/admin/accounts_and_billing_settings/edit.html.haml @@ -9,7 +9,7 @@ %fieldset.no-border-bottom %legend - =t :admin_settings + = t(:admin_settings) = form_for @settings, as: :settings, url: main_app.admin_accounts_and_billing_settings_path, :method => :put do |f| .row{ ng: { app: 'admin.accounts_and_billing_settings' } } .twelve.columns.alpha.omega diff --git a/app/views/admin/cache_settings/show.html.haml b/app/views/admin/cache_settings/show.html.haml index 79b3e5acaf..f2069f0e55 100644 --- a/app/views/admin/cache_settings/show.html.haml +++ b/app/views/admin/cache_settings/show.html.haml @@ -4,10 +4,10 @@ %table.index %thead %tr - %th Distributor - %th Order Cycle - %th Status - %th Diff + %th= t('.distributor') + %th= t('.order_cycle') + %th= t('.status') + %th= t('.diff') %tbody - @results.each do |result| %tr diff --git a/app/views/admin/contents/edit.html.haml b/app/views/admin/contents/edit.html.haml index 82751abebc..e0bdb0adc0 100644 --- a/app/views/admin/contents/edit.html.haml +++ b/app/views/admin/contents/edit.html.haml @@ -1,8 +1,7 @@ = render 'spree/admin/shared/configuration_menu' - content_for :page_title do - Content - + = t('.title') = form_tag main_app.admin_content_path, method: :put, multipart: true do #preferences diff --git a/app/views/admin/enterprise_fees/index.html.haml b/app/views/admin/enterprise_fees/index.html.haml index ec62fa5d36..3a2dae96b1 100644 --- a/app/views/admin/enterprise_fees/index.html.haml +++ b/app/views/admin/enterprise_fees/index.html.haml @@ -1,5 +1,5 @@ = content_for :page_title do - =t :Enterprise_Fees + = t('.title') = ng_form_for @enterprise_fee_set, :url => main_app.bulk_update_admin_enterprise_fees_path, :html => {'ng-app' => 'admin.enterpriseFees', 'ng-controller' => 'enterpriseFeesCtrl'} do |enterprise_fee_set_form| = hidden_field_tag 'enterprise_id', @enterprise.id if @enterprise @@ -12,17 +12,17 @@ %thead %tr %th - =t'Enterprise' + = t('.enterprise') %th - =t'fee_type' + = t('.fee_type') %th - =t'name' + = t('.name') %th - =t'tax_category' + = t('.tax_category') %th - =t'calculator' + = t('.calculator') %th - =t'calculator_values' + = t('.calculator_values') %th.actions %tbody = enterprise_fee_set_form.ng_fields_for :collection do |f| diff --git a/app/views/admin/enterprise_groups/index.html.haml b/app/views/admin/enterprise_groups/index.html.haml index 747eff0b94..2540c64980 100644 --- a/app/views/admin/enterprise_groups/index.html.haml +++ b/app/views/admin/enterprise_groups/index.html.haml @@ -3,7 +3,7 @@ - if admin_user? = content_for :page_actions do - %li= button_link_to "New Enterprise Group", main_app.new_admin_enterprise_group_path + %li= button_link_to t('.new_button'), main_app.new_admin_enterprise_group_path %table.index#listing_enterprise_groups %thead diff --git a/app/views/admin/enterprises/_actions.html.haml b/app/views/admin/enterprises/_actions.html.haml index 5bcfc7a512..d5b3ae14a9 100644 --- a/app/views/admin/enterprises/_actions.html.haml +++ b/app/views/admin/enterprises/_actions.html.haml @@ -1,4 +1,4 @@ -= link_to_with_icon('icon-edit', 'Edit Profile', main_app.edit_admin_enterprise_path(enterprise), class: 'edit') += link_to_with_icon('icon-edit', t('.edit_profile'), main_app.edit_admin_enterprise_path(enterprise), class: 'edit') %br/ - if can? :destroy, enterprise @@ -6,27 +6,27 @@ %br/ - if enterprise.is_primary_producer - = link_to_with_icon 'icon-dashboard', 'Properties', main_app.admin_enterprise_producer_properties_path(enterprise_id: enterprise) + = link_to_with_icon 'icon-dashboard', t('.properties'), main_app.admin_enterprise_producer_properties_path(enterprise_id: enterprise) (#{enterprise.producer_properties.count}) %br/ - if enterprise.is_distributor - if can?(:admin, Spree::PaymentMethod) && can?(:manage_payment_methods, enterprise) - = link_to_with_icon 'icon-chevron-right', 'Payment Methods', spree.admin_payment_methods_path(enterprise_id: enterprise.id) + = link_to_with_icon 'icon-chevron-right', t('.payment_methods'), spree.admin_payment_methods_path(enterprise_id: enterprise.id) (#{enterprise.payment_methods.count}) - if enterprise.payment_methods.count == 0 - %span.icon-exclamation-sign{"ofn-with-tip" => "This enterprise has no payment methods", style: "font-size: 16px;color: #DA5354"} + %span.icon-exclamation-sign{"ofn-with-tip" => t('.payment_methods_tip'), style: "font-size: 16px;color: #DA5354"} %br/ - if can?(:admin, Spree::ShippingMethod) && can?(:manage_shipping_methods, enterprise) - = link_to_with_icon 'icon-plane', 'Shipping Methods', spree.admin_shipping_methods_path(enterprise_id: enterprise.id) + = link_to_with_icon 'icon-plane', t('.shipping_methods'), spree.admin_shipping_methods_path(enterprise_id: enterprise.id) (#{enterprise.shipping_methods.count}) - if enterprise.shipping_methods.count == 0 - %span.icon-exclamation-sign{"ofn-with-tip" => "This enterprise has shipping methods", style: "font-size: 16px;color: #DA5354"} + %span.icon-exclamation-sign{"ofn-with-tip" => t('.shipping_methods_tip'), style: "font-size: 16px;color: #DA5354"} %br/ - if can?(:admin, EnterpriseFee) && can?(:manage_enterprise_fees, enterprise) - = link_to_with_icon 'icon-money', 'Enterprise Fees', main_app.admin_enterprise_fees_path(enterprise_id: enterprise.id) + = link_to_with_icon 'icon-money', t('.enterprise_fees'), main_app.admin_enterprise_fees_path(enterprise_id: enterprise.id) (#{enterprise.enterprise_fees.count}) - if enterprise.enterprise_fees.count == 0 - %span.icon-warning-sign{"ofn-with-tip" => "This enterprise has no fees", style: "font-size: 16px;color: orange"} + %span.icon-warning-sign{"ofn-with-tip" => t('.enterprise_fees_tip'), style: "font-size: 16px;color: orange"} diff --git a/app/views/admin/enterprises/_admin_index.html.haml b/app/views/admin/enterprises/_admin_index.html.haml index 2359f45f78..5e1eb4c92c 100644 --- a/app/views/admin/enterprises/_admin_index.html.haml +++ b/app/views/admin/enterprises/_admin_index.html.haml @@ -15,13 +15,13 @@ %col{style: "width: 25%;"}/ %thead %tr{"data-hook" => "enterprises_header"} - %th Name - %th Role + %th= t('.name') + %th= t('.role') - if spree_current_user.admin? - %th Sells - %th Visible? + %th= t('.sells') + %th= t('.visible') - if spree_current_user.admin? - %th Owner + %th= t('.owner') %th %tbody = f.fields_for :collection do |enterprise_form| @@ -30,7 +30,7 @@ %td= link_to enterprise.name, main_app.edit_admin_enterprise_path(enterprise) %td = enterprise_form.check_box :is_primary_producer - Producer + = t('.producer') - if spree_current_user.admin? %td= enterprise_form.select :sells, Enterprise::SELLS, {}, class: 'select2 fullwidth' %td= enterprise_form.check_box :visible @@ -41,4 +41,4 @@ - if @enterprises.empty? %tr %td{colspan: "4"}= t(:none) - = f.submit 'Update' + = f.submit t(:update) diff --git a/app/views/admin/enterprises/_change_type_form.html.haml b/app/views/admin/enterprises/_change_type_form.html.haml index ac5ca55821..a7c07ab87b 100644 --- a/app/views/admin/enterprises/_change_type_form.html.haml +++ b/app/views/admin/enterprises/_change_type_form.html.haml @@ -12,36 +12,36 @@ .basic_producer.option.one-third.column.alpha %a.full-width.button.selector{ ng: { click: "sells='none'", class: "{selected: sells=='none'}" } } .top - %h3 Producer Profile - %p Connect through OFN - .bottom ALWAYS FREE + %h3= t('.producer_profile') + %p= t('.connect_ofn') + .bottom= t('.always_free') %p.description - Add your products to Open Food Network, allowing hubs to stock your products in their stores. + = t('.producer_description_text') .producer_shop.option.one-third.column %a.full-width.button.selector{ ng: { click: "sells='own'", class: "{selected: sells=='own'}" } } .top - %h3 Producer Shop - %p Sell your own produce + %h3= t('.producer_shop') + %p= t('.sell_your_produce') .bottom %monthly-pricing-description{ joiner: "newline" } %p.description - Sell your products directly to customers through your very own Open Food Network shopfront. + = t('.producer_description_text') %br %br - A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'. + = t('.producer_description_text2') .full_hub.option.one-third.column.omega %a.full-width.button.selector{ ng: { click: "sells='any'", class: "{selected: sells=='any'}" } } .top - %h3 Producer Hub - %p Sell produce from self and others + %h3= t('.producer_hub') + %p= t('.producer_hub_text') .bottom %monthly-pricing-description{ joiner: "newline" } %p.description - Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network. + = t('.producer_hub_description_text') -# %p.description -# Test out having your own shopfront with full access to all Shopfront features for 30 days. @@ -55,38 +55,38 @@ .shop_profile.option.six.columns %a.full-width.button.selector{ ng: { click: "sells='none'", class: "{selected: sells=='none'}" } } .top - %h3 Profile Only - %p Get a listing - .bottom ALWAYS FREE + %h3= t('.profile') + %p= t('.get_listing') + .bottom= t('.always_free') %p.description - People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings. + = t('.profile_description_text') .full_hub.option.six.columns %a.full-width.button.selector{ ng: { click: "sells='any'", class: "{selected: sells=='any'}" } } .top - %h3 Hub Shop - %p Sell produce from others + %h3= t('.hub_shop') + %p= t('.hub_shop_text') .bottom %monthly-pricing-description{ joiner: "newline" } %p.description - Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network. + = t('.hub_shop_description_text') .two.columns.omega   .row .sixteen.columns.alpha %span.error{ ng: { show: "(change_type.sells.$error.required || change_type.sells.$error.pattern) && submitted" } } - Please choose one of the options above. + = t('.choose_option') - if @enterprise.sells == 'unspecified' && @enterprise.shop_trial_start_date.nil? -if free_use? - %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)" } } + %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)" } } - else - trial_length = Spree::Config[:shop_trial_length_days] %input.button.big{ type: 'submit', value: "Start #{trial_length}-Day Shop Trial", ng: { click: "submit(change_type)", show: "sells=='own' || sells=='any'" } } - %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)", hide: "sells=='own' || sells=='any'" } } + %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)", hide: "sells=='own' || sells=='any'" } } - elsif @enterprise.sells == 'unspecified' - %input.button.big{ type: 'submit', value: 'Select and continue', ng: { click: "submit(change_type)" } } + %input.button.big{ type: 'submit', value: t(:select_continue), ng: { click: "submit(change_type)" } } - else - %input.button.big{ type: 'submit', value: 'Change now', ng: { click: "submit(change_type)" } } + %input.button.big{ type: 'submit', value: t('.change_now'), ng: { click: "submit(change_type)" } } %br   %hr diff --git a/app/views/admin/enterprises/_enterprise_user_index.html.haml b/app/views/admin/enterprises/_enterprise_user_index.html.haml index d89970946d..4b777e127b 100644 --- a/app/views/admin/enterprises/_enterprise_user_index.html.haml +++ b/app/views/admin/enterprises/_enterprise_user_index.html.haml @@ -2,7 +2,7 @@ .row{ 'ng-hide' => '!loaded' } .controls{ :class => "sixteen columns alpha", :style => "margin-bottom: 15px;" } .four.columns.alpha - %input{ :class => "fullwidth", :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => 'Search By Name' } + %input{ :class => "fullwidth", :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => t('.search_placeholder') } .six.columns   -# = render 'admin/shared/bulk_actions_dropdown' .three.columns   @@ -41,7 +41,7 @@ %i.icon-status{ ng: { class: "enterprise.status" } } %td.manage{ ng: { show: 'columns.manage.visible' } } %a.button.fullwidth{ ng: { href: '{{::enterprise.edit_path}}' } } - Manage + = t('.manage') %i.icon-arrow-right %tr.panel-row{ object: "enterprise", panels: "{producer: 'enterprise_producer', package: 'enterprise_package', status: 'enterprise_status'}" } diff --git a/app/views/admin/enterprises/_new_form.html.haml b/app/views/admin/enterprises/_new_form.html.haml index ba8fce56ae..f04e55acd6 100644 --- a/app/views/admin/enterprises/_new_form.html.haml +++ b/app/views/admin/enterprises/_new_form.html.haml @@ -1,98 +1,97 @@ .row .three.columns.alpha - = f.label :name + = f.label :name, t('admin.enterprises.form.primary_details.name') %span.required * .nine.columns.omega - = f.text_field :name, { placeholder: "eg. Professor Plum's Biodynamic Truffles", class: "fullwidth" } + = f.text_field :name, { placeholder: t('admin.enterprises.form.primary_details.name_placeholder'), class: "fullwidth" } - if spree_current_user.admin? .row .three.columns.alpha - =f.label :owner_id, 'Owner' + =f.label :owner_id, t('.owner') %span.required * - %div{'ofn-with-tip' => "The primary user responsible for this enterprise."} - %a What's this? + %div{'ofn-with-tip' => t('.owner_tip')} + %a= t('admin.whats_this') .nine.columns.omega - owner_email = @enterprise.andand.owner.andand.email || "" = f.hidden_field :owner_id, class: "select2 fullwidth", 'user-select' => 'Enterprise.owner' .row .three.columns.alpha - %label Primary Producer? - %div{'ofn-with-tip' => "Select 'Producer' if you are a primary producer of food."} - %a What's this? + %label= t('admin.enterprises.form.primary_details.primary_producer') + %div{'ofn-with-tip' => t('admin.enterprises.form.primary_details.primary_producer_tip')} + %a= t('admin.whats_this') .five.columns.omega = f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'   - = f.label :is_primary_producer, 'I am a Producer' + = f.label :is_primary_producer, t('.i_am_producer') - if spree_current_user.admin? .row .alpha.eleven.columns .three.columns.alpha - = f.label :sells, 'Sells' - %div{'ofn-with-tip' => "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"} + = f.label :sells, t('admin.enterprises.form.primary_details.sells') + %div{'ofn-with-tip' => t('admin.enterprises.form.primary_details.sells_tip')} %a What's this? .two.columns = f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells'   - = f.label :sells, "None", value: "none" + = f.label :sells, t('admin.enterprises.form.primary_details.none'), value: "none" .two.columns = f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells'   - = f.label :sells, "Own", value: "own" + = f.label :sells, t('admin.enterprises.form.primary_details.own'), value: "own" .four.columns.omega = f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells'   - = f.label :sells, "Any", value: "any" - + = f.label :sells, t('admin.enterprises.form.primary_details.any'), value: "any" .row .alpha.three.columns - = f.label :contact, 'Contact Name' + = f.label :contact, t('.contact_name') .omega.nine.columns - = f.text_field :contact, { placeholder: "eg. Gustav Plum"} + = f.text_field :contact, { placeholder: t('admin.enterprises.form.contact.name_placeholder')} .row .alpha.three.columns - = f.label :email_address + = f.label :email_address, t('admin.enterprises.form.contact.email_address') .omega.nine.columns - = f.text_field :email_address, { placeholder: "eg. gustav@truffles.com", "ng-model" => "Enterprise.email_address" } + = f.text_field :email_address, { placeholder: t('admin.enterprises.form.contact.email_address_placeholder'), "ng-model" => "Enterprise.email_address" } .row .alpha.three.columns - = f.label :phone + = f.label :phone, t('admin.enterprises.form.contact.phone') .omega.nine.columns - = f.text_field :phone, { placeholder: "eg. 98 7654 3210"} + = f.text_field :phone, { placeholder: t('admin.enterprises.form.contact.phone_placeholder')} .row .alpha.three.columns - = f.label :website + = f.label :website, t('admin.enterprises.form.contact.website') .omega.nine.columns - = f.text_field :website, { placeholder: "eg. www.truffles.com"} + = f.text_field :website, { placeholder: t('admin.enterprises.form.contact.website_placeholder')} = f.fields_for :address do |af| .row .three.columns.alpha - = af.label :address1 + = af.label :address1, t(:address) %span.required * .nine.columns.omega - = af.text_field :address1, { placeholder: "eg. 123 High Street"} + = af.text_field :address1, { placeholder: t(:address_placeholder)} .row .alpha.three.columns - = af.label :address2 + = af.label :address2, t(:address2) .nine.columns.omega = af.text_field :address2 .row .three.columns.alpha - = af.label :city, 'Suburb' + = af.label :city, t(:city) \/ - = af.label :zipcode, 'Postcode' + = af.label :zipcode, t(:postcode) %span.required * .four.columns - = af.text_field :city, { placeholder: "eg. Northcote"} + = af.text_field :city, { placeholder: t(:city_placeholder)} .five.columns.omega - = af.text_field :zipcode, { placeholder: "eg. 3070"} + = af.text_field :zipcode, { placeholder: t(:postcode_placeholder)} .row .three.columns.alpha - = af.label :state_id, 'State' + = af.label :state_id, t(:state) \/ - = af.label :country_id, 'Country' + = af.label :country_id, t(:country) .four.columns = af.collection_select :state_id, af.object.country.states, :id, :name, {}, :class => "select2 fullwidth" .five.columns.omega diff --git a/app/views/admin/enterprises/_ng_form.html.haml b/app/views/admin/enterprises/_ng_form.html.haml index ca38b7eca4..17b649bcc6 100644 --- a/app/views/admin/enterprises/_ng_form.html.haml +++ b/app/views/admin/enterprises/_ng_form.html.haml @@ -8,8 +8,8 @@ } do |f| %save-bar{ dirty: "enterprise_form.$dirty", persist: "true" } - %input.red{ type: "button", value: "Update", ng: { click: "submit()", disabled: "!enterprise_form.$dirty" } } - %input{ type: "button", ng: { value: "enterprise_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_enterprises_path}')" } } + %input.red{ type: "button", value: t(:update), ng: { click: "submit()", disabled: "!enterprise_form.$dirty" } } + %input{ type: "button", ng: { value: "enterprise_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", click: "cancel('#{main_app.admin_enterprises_path}')" } } diff --git a/app/views/admin/enterprises/edit.html.haml b/app/views/admin/enterprises/edit.html.haml index 5d3a623f40..2e53f3e2c0 100644 --- a/app/views/admin/enterprises/edit.html.haml +++ b/app/views/admin/enterprises/edit.html.haml @@ -1,12 +1,11 @@ -= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise } += render partial: 'spree/shared/error_messages', locals: { target: @enterprise } - content_for :page_title do - Editing: + = t('.editing') = @enterprise.name - content_for :page_actions do - %li= button_link_to "Back to enterprises list", main_app.admin_enterprises_path, icon: 'icon-arrow-left' - + %li= button_link_to t('.back_link'), main_app.admin_enterprises_path, icon: 'icon-arrow-left' = render 'admin/enterprises/form_data' diff --git a/app/views/admin/enterprises/form/_about_us.html.haml b/app/views/admin/enterprises/form/_about_us.html.haml index a04437dad0..32550b711b 100644 --- a/app/views/admin/enterprises/form/_about_us.html.haml +++ b/app/views/admin/enterprises/form/_about_us.html.haml @@ -1,11 +1,11 @@ .row .alpha.three.columns - = f.label :description, 'Short Description' + = f.label :description, t('.desc_short') .omega.eight.columns - = f.text_field :description, maxlength: 255, placeholder: 'Tell us about your enterprise in one or two sentences' + = f.text_field :description, maxlength: 255, placeholder: t('.desc_short_placeholder') .row .alpha.three.columns - = f.label :long_description, 'About Us' + = f.label :long_description, t('.desc_long') .omega.eight.columns -# textAngular toolbar options, add to the ta-toolbar array below and separate into groups with extra ],[ if needed: -# ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre', 'quote'], @@ -14,4 +14,4 @@ -# ['html', 'insertImage', 'insertLink', 'insertVideo'] %text-angular{'ng-model' => 'Enterprise.long_description', 'id' => 'enterprise_long_description', 'name' => 'enterprise[long_description]', 'class' => 'text-angular', 'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]", - 'placeholder' => 'Tell customers about yourself. This information appears on your public profile.'} \ No newline at end of file + 'placeholder' => t('.desc_long_placeholder')} \ No newline at end of file diff --git a/app/views/admin/enterprises/form/_address.html.haml b/app/views/admin/enterprises/form/_address.html.haml index 68ae7d68bf..a1485d485f 100644 --- a/app/views/admin/enterprises/form/_address.html.haml +++ b/app/views/admin/enterprises/form/_address.html.haml @@ -1,34 +1,35 @@ -# redo denoting required fields in the whole project .row - Required fields are denoted with an asterisk ( + = t(:required_fields) + ( %span.required * ) .row .three.columns.alpha - = af.label :address1 + = af.label :address1, t(:address) %span.required * .eight.columns.omega - = af.text_field :address1, { placeholder: "eg. 123 High Street"} + = af.text_field :address1, { placeholder: t(:address_placeholder) } .row .alpha.three.columns - = af.label :address2 + = af.label :address2, t(:address2) .eight.columns.omega = af.text_field :address2 .row .three.columns.alpha - = af.label :city, 'Suburb' + = af.label :city, t(:city) \/ - = af.label :zipcode, 'Postcode' + = af.label :zipcode, t(:postcode) %span.required * .four.columns - = af.text_field :city, { placeholder: "eg. Northcote"} + = af.text_field :city, { placeholder: t(:city_placeholder) } .four.columns.omega - = af.text_field :zipcode, { placeholder: "eg. 3070"} + = af.text_field :zipcode, { placeholder: t(:postcode_placeholder) } .row .three.columns.alpha - = af.label :state_id, 'State' + = af.label :state_id, t(:state) \/ - = af.label :country_id, 'Country' + = af.label :country_id, t(:country) %span.required * .four.columns = af.collection_select :state_id, af.object.country.states, :id, :name, {}, :class => "select2 fullwidth" diff --git a/app/views/admin/enterprises/form/_business_details.html.haml b/app/views/admin/enterprises/form/_business_details.html.haml index 92f727d8d3..4015e51282 100644 --- a/app/views/admin/enterprises/form/_business_details.html.haml +++ b/app/views/admin/enterprises/form/_business_details.html.haml @@ -1,14 +1,14 @@ .row .alpha.three.columns - = f.label :abn, 'ABN' + = f.label :abn, t('.abn') .omega.eight.columns - = f.text_field :abn, { placeholder: "eg. 99 123 456 789"} + = f.text_field :abn, { placeholder: t('.abn_placeholder') } .row .alpha.three.columns - = f.label :acn, 'ACN' + = f.label :acn, t('.acn') .omega.eight.columns - = f.text_field :acn, { placeholder: "eg. 123 456 789"} + = f.text_field :acn, { placeholder: t('.acn_placeholder') } .row .three.columns.alpha @@ -16,8 +16,8 @@ .two.columns = f.radio_button :charges_sales_tax, true   - = f.label :charges_sales_tax, "Yes", :value => "true" + = f.label :charges_sales_tax, t(:say_yes), value: 'true' .five.columns.omega = f.radio_button :charges_sales_tax, false   - = f.label :charges_sales_tax, "No", :value => "false" + = f.label :charges_sales_tax, t(:say_no), value: 'false' diff --git a/app/views/admin/enterprises/form/_contact.html.haml b/app/views/admin/enterprises/form/_contact.html.haml index 28bbd6014b..1a7fa792f1 100644 --- a/app/views/admin/enterprises/form/_contact.html.haml +++ b/app/views/admin/enterprises/form/_contact.html.haml @@ -1,20 +1,20 @@ .row .alpha.three.columns - = f.label :contact, 'Name' + = f.label :contact, t('.name') .omega.eight.columns - = f.text_field :contact, { placeholder: "eg. Gustav Plum"} + = f.text_field :contact, { placeholder: t('.name_placeholder') } .row .alpha.three.columns - = f.label :email_address + = f.label :email_address, t('.email_address') .omega.eight.columns - = f.text_field :email_address, { placeholder: "eg. gustav@truffles.com" } + = f.text_field :email_address, { placeholder: t('.email_address_placeholder') } .row .alpha.three.columns - = f.label :phone + = f.label :phone, t('.phone') .omega.eight.columns - = f.text_field :phone, { placeholder: "eg. 98 7654 3210"} + = f.text_field :phone, { placeholder: t('.phone_placeholder') } .row .alpha.three.columns - = f.label :website + = f.label :website, t('.website') .omega.eight.columns - = f.text_field :website, { placeholder: "eg. www.truffles.com"} + = f.text_field :website, { placeholder: t('.website_placeholder') } diff --git a/app/views/admin/enterprises/form/_enterprise_fees.html.haml b/app/views/admin/enterprises/form/_enterprise_fees.html.haml index 53e48f1be9..dcae9afbc4 100644 --- a/app/views/admin/enterprises/form/_enterprise_fees.html.haml +++ b/app/views/admin/enterprises/form/_enterprise_fees.html.haml @@ -2,8 +2,8 @@ %table %thead %tr - %th Name - %th Fee Type + %th= t('.name') + %th= t('.fee_type') -# %th Calculator -# %th Calculator Values %tbody @@ -16,15 +16,15 @@ %br %div %a.button{ href: "#{main_app.admin_enterprise_fees_path}"} - Manage Enterprise Fees + = t('.manage_fees') %i.icon-arrow-right - else %p.text-center - You don't have any enterprise fees yet. + = t('.no_fees_yet') %br .text-center %a.button{ href: "#{main_app.admin_enterprise_fees_path}"} - Create One Now + = t('.create_button') %i.icon-arrow-right diff --git a/app/views/admin/enterprises/form/_images.html.haml b/app/views/admin/enterprises/form/_images.html.haml index c03be2caa3..97d31dabcc 100644 --- a/app/views/admin/enterprises/form/_images.html.haml +++ b/app/views/admin/enterprises/form/_images.html.haml @@ -8,11 +8,13 @@ = f.file_field :logo .row .alpha.three.columns - = f.label :promo_image, 'ofn-with-tip' => 'This image is displayed in "About Us"' + = f.label :promo_image, 'ofn-with-tip' => t('.promo_image_placeholder') %br/ - %span{ style: 'font-weight:bold' } PLEASE NOTE: - Any promo image uploaded here will be cropped to 1200 x 260. - The promo image is displayed at the top of an enterprise's profile page and pop-ups. + %span{ style: 'font-weight:bold' }= t('.promo_image_note1') + %br + = t('.promo_image_note2') + %br + = t('.promo_image_note3') .omega.eight.columns = image_tag @object.promo_image(:large) if @object.promo_image.present? diff --git a/app/views/admin/enterprises/form/_inventory_settings.html.haml b/app/views/admin/enterprises/form/_inventory_settings.html.haml index 0df0fdb35f..c055a1231f 100644 --- a/app/views/admin/enterprises/form/_inventory_settings.html.haml +++ b/app/views/admin/enterprises/form/_inventory_settings.html.haml @@ -3,16 +3,17 @@ -# their inventory if they so choose .row .alpha.eleven.columns - You may opt to manage stock levels and prices in via your + = t('.text1') = succeed "." do %strong - %a{href: main_app.admin_inventory_path } inventory - If you are using the inventory tool, you can select whether new products added by your suppliers need to be added to your inventory before they can be stocked. If you are not using your inventory to manage your products you should select the 'recommended' option below: + %a{href: main_app.admin_inventory_path }= t('.inventory') + %br + = t('.text2') .row .alpha.eleven.columns .five.columns.alpha = radio_button :enterprise, :preferred_product_selection_from_inventory_only, "0", { 'ng-model' => 'Enterprise.preferred_product_selection_from_inventory_only' } - = label :enterprise, :preferred_product_selection_from_inventory_only, "New products can be put into my shopfront (recommended)" + = label :enterprise, :preferred_product_selection_from_inventory_only, t('.preferred_product_selection_from_inventory_only_yes') .six.columns.omega = radio_button :enterprise, :preferred_product_selection_from_inventory_only, "1", { 'ng-model' => 'Enterprise.preferred_product_selection_from_inventory_only' } - = label :enterprise, :preferred_product_selection_from_inventory_only, "New products must be added to my inventory before they can be put into my shopfront" + = label :enterprise, :preferred_product_selection_from_inventory_only, t('.preferred_product_selection_from_inventory_only_no') diff --git a/app/views/admin/enterprises/form/_payment_methods.html.haml b/app/views/admin/enterprises/form/_payment_methods.html.haml index 57d9426d03..efcde16dc0 100644 --- a/app/views/admin/enterprises/form/_payment_methods.html.haml +++ b/app/views/admin/enterprises/form/_payment_methods.html.haml @@ -2,32 +2,32 @@ %table %thead %tr - %th Name - %th Applies? + %th= t('.name') + %th= t('.applies') %th %tbody - @payment_methods.each do |payment_method| %tr{ ng: { controller: 'paymentMethodsCtrl', init: "findPaymentMethodByID(#{payment_method.id})" } } %td= payment_method.name %td= f.check_box :payment_method_ids, { multiple: true, 'ng-model' => 'PaymentMethod.selected' }, payment_method.id, nil - %td= link_to "Edit", edit_admin_payment_method_path(payment_method) + %td= link_to t(:edit), edit_admin_payment_method_path(payment_method) %br .row .six.columns.alpha %a.button{ href: "#{admin_payment_methods_path}"} - Manage Payment Methods + = t('.manage') %i.icon-arrow-right .five.columns.omega.text-right %a.button{ href: "#{new_admin_payment_method_path}"} - Create New Payment Method + = t('.create_button') %i.icon-plus - else %p.text-center - You don't have any payment methods yet. + = t('.no_method_yet') %br .text-center %a.button{ href: "#{new_admin_payment_method_path}"} - Create One Now + = t('.create_one_button') %i.icon-arrow-right diff --git a/app/views/admin/enterprises/form/_primary_details.html.haml b/app/views/admin/enterprises/form/_primary_details.html.haml index 52b2ffebce..aad869288e 100644 --- a/app/views/admin/enterprises/form/_primary_details.html.haml +++ b/app/views/admin/enterprises/form/_primary_details.html.haml @@ -1,61 +1,61 @@ .row .alpha.eleven.columns .three.columns.alpha - = f.label :name + = f.label :name, t('.name') %span.required * .eight.columns.omega - = f.text_field :name, { placeholder: "eg. Professor Plum's Biodynamic Truffles" } + = f.text_field :name, { placeholder: t('.name_placeholder') } - if @groups.present? .row .alpha.eleven.columns .three.columns.alpha - = f.label :group_ids, 'Groups' - %div{'ofn-with-tip' => "Select any groups or regions that you are a member of. This will help customers find your enterprise."} - %a What's this? + = f.label :group_ids, t('.groups') + %div{'ofn-with-tip' => t('.groups_tip')} + %a= t('admin.whats_this') .eight.columns.omega - = f.collection_select :group_ids, @groups, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: "Start typing to search available groups..." + = f.collection_select :group_ids, @groups, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: t('.groups_placeholder') .row .three.columns.alpha - %label Primary Producer - %div{'ofn-with-tip' => "Select 'Producer' if you are a primary producer of food."} - %a What's this? + %label= t('.primary_producer') + %div{'ofn-with-tip' => t('.primary_producer_tip')} + %a= t('admin.whats_this') .five.columns.omega = f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer' - = f.label :is_primary_producer, 'Producer' + = f.label :is_primary_producer, t('.producer') - if spree_current_user.admin? .row .alpha.eleven.columns .three.columns.alpha - = f.label :sells, 'Sells' - %div{'ofn-with-tip' => "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
"} - %a What's this? + = f.label :sells, t('.sells') + %div{'ofn-with-tip' => t('.sells_tip')} + %a= t('admin.whats_this') .two.columns = f.radio_button :sells, "none", 'ng-model' => 'Enterprise.sells' - = f.label :sells, "None", value: "none" + = f.label :sells, t('.none'), value: "none" .two.columns = f.radio_button :sells, "own", 'ng-model' => 'Enterprise.sells' - = f.label :sells, "Own", value: "own" + = f.label :sells, t('.own'), value: "own" .four.columns.omega = f.radio_button :sells, "any", 'ng-model' => 'Enterprise.sells' - = f.label :sells, "Any", value: "any" + = f.label :sells, t('.any'), value: "any" .row .three.columns.alpha - %label Visible in search? - %div{'ofn-with-tip' => "Determines whether this enterprise will be visible to customers when searching the site."} - %a What's this? + %label= t('.visible_in_search') + %div{'ofn-with-tip' => t('.visible_in_search_tip')} + %a= t('admin.whats_this') .two.columns = f.radio_button :visible, true - = f.label :visible, "Visible", :value => "true" + = f.label :visible, t('.visible'), value: 'true' .five.columns.omega = f.radio_button :visible, false - = f.label :visible, "Not Visible", :value => "false" + = f.label :visible, t('.not_visible'), value: 'false' .permalink{ ng: { controller: "permalinkCtrl" } } .row{ ng: { show: "Enterprise.sells == 'own' || Enterprise.sells == 'any'" } } .three.columns.alpha - = f.label :permalink, 'Permalink (no spaces)' - %div{'ofn-with-tip' => "This permalink is used to create the url to your shop: #{spree.root_url}your-shop-name/shop"} - %a What's this? + = f.label :permalink, t('.permalink') + %div{'ofn-with-tip' => t('.permalink_tip', link: spree.root_url)} + %a= t('admin.whats_this') .six.columns = f.text_field :permalink, { 'ng-model' => "Enterprise.permalink", placeholder: "eg. your-shop-name", 'ng-model-options' => "{ updateOn: 'default blur', debounce: {'default': 300, 'blur': 0} }" } .two.columns.omega @@ -65,9 +65,9 @@ %i{ ng: { class: "{'icon-ok-sign': availability == 'Available', 'icon-remove-sign': availability == 'Unavailable'}" } } .row{ ng: { show: "Enterprise.sells == 'own' || Enterprise.sells == 'any'" } } .three.columns.alpha - %label Link to shop front - %div{'ofn-with-tip' => "A direct link to your shopfront on the Open Food Network."} - %a What's this? + %label= t('.link_to_front') + %div{'ofn-with-tip' => t('.link_to_front_tip')} + %a= t('admin.whats_this') .eight.columns.omega = surround spree.root_url, "/shop" do {{Enterprise.permalink}} diff --git a/app/views/admin/enterprises/form/_shipping_methods.html.haml b/app/views/admin/enterprises/form/_shipping_methods.html.haml index 5ccc22a720..db7daa5b98 100644 --- a/app/views/admin/enterprises/form/_shipping_methods.html.haml +++ b/app/views/admin/enterprises/form/_shipping_methods.html.haml @@ -2,8 +2,8 @@ %table %thead %tr - %th Name - %th Applies? + %th= t('.name') + %th= t('.applies') %th %tbody - @shipping_methods.each do |shipping_method| @@ -15,19 +15,19 @@ .row .six.columns.alpha %a.button{ href: "#{admin_shipping_methods_path}"} - Manage Shipping Methods + = t('.manage') %i.icon-arrow-right .five.columns.omega.text-right %a.button{ href: "#{new_admin_shipping_method_path}"} - Create New Shipping Method + = t('.create_button') %i.icon-plus - else %p.text-center - You don't have any shipping methods yet. + = t('.no_method_yet') %br .text-center %a.button{ href: "#{new_admin_shipping_method_path}"} - Create One Now + = t('.create_one_button') %i.icon-arrow-right diff --git a/app/views/admin/enterprises/form/_shop_preferences.html.haml b/app/views/admin/enterprises/form/_shop_preferences.html.haml index 6573e4f3b4..0e5a1096f0 100644 --- a/app/views/admin/enterprises/form/_shop_preferences.html.haml +++ b/app/views/admin/enterprises/form/_shop_preferences.html.haml @@ -5,7 +5,7 @@ .eight.columns.omega %text-angular{'ng-model' => 'Enterprise.preferred_shopfront_message', 'id' => 'enterprise_preferred_shopfront_message', 'name' => 'enterprise[preferred_shopfront_message]', 'class' => 'text-angular', 'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]", - 'placeholder' => 'An optional explanation for customers detailing how your shopfront works, to be displayed above the product list on your shop page.'} + 'placeholder' => t('.shopfront_message_placeholder')} .row .alpha.eleven.columns .three.columns.alpha @@ -13,7 +13,7 @@ .eight.columns.omega %text-angular{'ng-model' => 'Enterprise.preferred_shopfront_closed_message', 'id' => 'enterprise_preferred_shopfront_closed_message', 'name' => 'enterprise[preferred_shopfront_closed_message]', 'class' => 'text-angular', 'ta-toolbar' => "[['h1','h2','h3','h4','p'],['bold','italics','underline','clear'],['insertLink']]", - 'placeholder' => 'A message which provides a more detailed explanation about why your shop is closed and/or when customers can expect it to open again. This is displayed on your shop only when you have no active order cycles (ie. shop is closed).'} + 'placeholder' => t('.shopfront_closed_message_placeholder')} .row .alpha.eleven.columns .three.columns.alpha @@ -29,10 +29,10 @@ = f.label "enterprise_preferred_shopfront_order_cycle_order", t(:sort_order_cycles_on_shopfront_by) .three.columns = radio_button :enterprise, :preferred_shopfront_order_cycle_order, :orders_open_at, { 'ng-model' => 'Enterprise.preferred_shopfront_order_cycle_order' } - = label :enterprise, :preferred_shopfront_order_cycle_order_orders_open_at, "Open Date" + = label :enterprise, :preferred_shopfront_order_cycle_order_orders_open_at, t('.open_date') .five.columns.omega = radio_button :enterprise, :preferred_shopfront_order_cycle_order, :orders_close_at, { 'ng-model' => 'Enterprise.preferred_shopfront_order_cycle_order' } - = label :enterprise, :preferred_shopfront_order_cycle_order_orders_close_at, "Close Date" + = label :enterprise, :preferred_shopfront_order_cycle_order_orders_close_at, t('.close_date') .row .alpha.eleven.columns .three.columns.alpha diff --git a/app/views/admin/enterprises/form/_social.html.haml b/app/views/admin/enterprises/form/_social.html.haml index 1909a6fc4a..11939739c1 100644 --- a/app/views/admin/enterprises/form/_social.html.haml +++ b/app/views/admin/enterprises/form/_social.html.haml @@ -17,4 +17,4 @@ .alpha.three.columns = f.label :twitter .omega.eight.columns - = f.text_field :twitter, { placeholder: "eg. @the_prof" } \ No newline at end of file + = f.text_field :twitter, { placeholder: t('.twitter_placeholder') } \ No newline at end of file diff --git a/app/views/admin/enterprises/form/_tag_rules.html.haml b/app/views/admin/enterprises/form/_tag_rules.html.haml index e58f7c5a62..822ea3f1ff 100644 --- a/app/views/admin/enterprises/form/_tag_rules.html.haml +++ b/app/views/admin/enterprises/form/_tag_rules.html.haml @@ -2,7 +2,7 @@ .eleven.columns.alpha.omega %ofn-sortable{ axis: "y", handle: ".header", items: '.customer_tag', position: "tagGroup.position", after: { sort: "updateRuleCounts()" } } .no_tags{ ng: { show: "tagGroups.length == 0" } } - No tags apply to this enterprise yet + = t('.no_tags_yet') = render 'admin/enterprises/form/tag_rules/default_rules' -# = render 'customer_tags' .customer_tag{ id: "tg_{{tagGroup.position}}", ng: { repeat: "tagGroup in tagGroups" } } @@ -14,14 +14,14 @@ %tr %td %h5 - For customers tagged: + = t('.for_customers_tagged') %td %tags-with-translation{ object: "tagGroup", max: 1, on: { tag: { added: "updateTagsRulesFor(tagGroup)", removed: "updateTagsRulesFor(tagGroup)" } } } .no_rules{ ng: { show: "tagGroup.rules.length == 0" } } - No rules apply to this tag yet + = t('.no_rules_yet') .tag_rule{ ng: { repeat: "rule in tagGroup.rules" } } .add_rule.text-center - %input.button.icon-plus{ type: 'button', value: "+ Add A New Rule", "add-new-rule-to" => "addNewRuleTo", "tag-group" => "tagGroup", "new-tag-rule-dialog" => true } + %input.button.icon-plus{ type: 'button', value: t('.add_new_rule'), "add-new-rule-to" => "addNewRuleTo", "tag-group" => "tagGroup", "new-tag-rule-dialog" => true } .add_tag - %input.button.red.icon-plus{ type: 'button', value: "+ Add A New Tag", ng: { click: 'addNewTag()' } } + %input.button.red.icon-plus{ type: 'button', value: t('.add_new_tag'), ng: { click: 'addNewTag()' } } diff --git a/app/views/admin/enterprises/form/_users.html.haml b/app/views/admin/enterprises/form/_users.html.haml index 42e25fad0a..eea13440a6 100644 --- a/app/views/admin/enterprises/form/_users.html.haml +++ b/app/views/admin/enterprises/form/_users.html.haml @@ -4,19 +4,18 @@ -if @enterprise.pending_any_confirmation? .alert-box - email = @enterprise.confirmed? ? @enterprise.unconfirmed_email : @enterprise.email - Email confirmation is pending. - We've sent a confirmation email to + = t('.email_confirmation_text') %strong= "#{email}." - = link_to('Resend', main_app.enterprise_confirmation_path(enterprise: { id: @enterprise.id, email: email } ), method: :post) + = link_to(t('.resend'), main_app.enterprise_confirmation_path(enterprise: { id: @enterprise.id, email: email } ), method: :post) %a.close{ href: "#" } × .row .three.columns.alpha - =f.label :owner_id, 'Owner' + =f.label :owner_id, t('.owner') - if full_permissions %span.required * - %div{'ofn-with-tip' => "The primary user responsible for this enterprise."} - %a What's this? + %div{'ofn-with-tip' => t('.owner_tip')} + %a= t('admin.whats_this') .eight.columns.omega - if full_permissions = f.hidden_field :owner_id, class: "select2 fullwidth", 'user-select' => 'Enterprise.owner' @@ -25,29 +24,29 @@ .row .three.columns.alpha - = f.label :email, 'Notifications' + = f.label :email, t('.notifications') - if full_permissions %span.required * - .with-tip{'data-powertip' => "Notifications about orders will be send to this email address."} - %a What's this? + .with-tip{'data-powertip' => t('.notifications_tip')} + %a= t('admin.whats_this') .eight.columns.omega - if full_permissions - = f.text_field :email, { placeholder: "eg. gustav@truffles.com", "ng-model" => "Enterprise.email" } + = f.text_field :email, { placeholder: t('.notifications_placeholder'), "ng-model" => "Enterprise.email" } - else = @enterprise.email .row{ ng: { hide: "pristineEmail == null || pristineEmail == Enterprise.email"} } .alpha.three.columns   .omega.eight.columns - Note: A new email address may need to be confirmed prior to use + = t('.notifications_note') .row .three.columns.alpha - =f.label :user_ids, 'Managers' + =f.label :user_ids, t('.managers') - if full_permissions %span.required * - %div{'ofn-with-tip' => "The other users with permission to manage this enterprise."} - %a What's this? + %div{'ofn-with-tip' => t('.managers_tip')} + %a= t('admin.whats_this') .eight.columns.omega - if full_permissions %table diff --git a/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml b/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml index 09c78f9c8c..a6e149d238 100644 --- a/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml +++ b/app/views/admin/enterprises/form/tag_rules/_default_rules.html.haml @@ -6,10 +6,10 @@ %tr %td %h5 - By Default + = t('.by_default') %i.text-big.icon-question-sign.help-modal{ template: 'admin/modals/tag_rule_help.html' } .no_rules{ ng: { show: "defaultTagGroup.rules.length == 0" } } - No default rules apply yet + = t('.no_rules_yet') .tag_rule{ ng: { repeat: "rule in defaultTagGroup.rules" } } .add_rule.text-center - %input.button.icon-plus{ type: 'button', value: "+ Add A New Default Rule", "add-new-rule-to" => "addNewRuleTo", "tag-group" => "defaultTagGroup", "new-tag-rule-dialog" => true } + %input.button.icon-plus{ type: 'button', value: t('.add_new_button'), "add-new-rule-to" => "addNewRuleTo", "tag-group" => "defaultTagGroup", "new-tag-rule-dialog" => true } diff --git a/app/views/admin/enterprises/index.html.haml b/app/views/admin/enterprises/index.html.haml index b84659738c..a233bc3146 100644 --- a/app/views/admin/enterprises/index.html.haml +++ b/app/views/admin/enterprises/index.html.haml @@ -1,19 +1,19 @@ - content_for :page_title do - Enterprises + = t('.title') - content_for :page_actions do = render 'admin/shared/user_guide_link' - if spree_current_user.can_own_more_enterprises? %li#new_product_link - = button_link_to "New Enterprise", main_app.new_admin_enterprise_path, :icon => 'icon-plus', :id => 'admin_new_enterprise_link' + = button_link_to t('.new_enterprise'), main_app.new_admin_enterprise_path, icon: 'icon-plus', id: 'admin_new_enterprise_link' = admin_inject_monthly_bill_description = admin_inject_column_preferences module: 'admin.enterprises', action: "enterprises_index" = render 'admin/shared/enterprises_sub_menu' -= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise_set } += render partial: 'spree/shared/error_messages', locals: { target: @enterprise_set } - if spree_current_user.admin? = render 'admin_index' diff --git a/app/views/admin/enterprises/new.html.haml b/app/views/admin/enterprises/new.html.haml index 4413acfc2c..4676d117fb 100644 --- a/app/views/admin/enterprises/new.html.haml +++ b/app/views/admin/enterprises/new.html.haml @@ -1,10 +1,10 @@ -= render :partial => 'spree/shared/error_messages', :locals => { :target => @enterprise } += render partial: 'spree/shared/error_messages', locals: { target: @enterprise } - content_for :page_title do - New Enterprise + = t('.title') - content_for :page_actions do - %li= button_link_to "Back to enterprises list", main_app.admin_enterprises_path, icon: 'icon-arrow-left' + %li= button_link_to t('.back_link'), main_app.admin_enterprises_path, icon: 'icon-arrow-left' -# Form diff --git a/app/views/admin/enterprises/welcome.html.haml b/app/views/admin/enterprises/welcome.html.haml index cfe5593d99..8f70211e88 100644 --- a/app/views/admin/enterprises/welcome.html.haml +++ b/app/views/admin/enterprises/welcome.html.haml @@ -1,13 +1,13 @@ #welcome_page.sixteen.columns.alpha %header - %h1 Welcome to the Open Food Network! + %h1= t('.welcome_title') %p - You have successfully created a + = t('.welcome_text') %strong = "#{"producer " if @enterprise.is_primary_producer}profile" %section - %h2 Next step - %p Choose your starting point: + %h2= t('.next_step') + %p= t('.choose_starting_point') = render partial: "change_type_form" diff --git a/app/views/admin/order_cycles/_advanced_settings.html.haml b/app/views/admin/order_cycles/_advanced_settings.html.haml index f8f71d0b93..bfbd6e9c91 100644 --- a/app/views/admin/order_cycles/_advanced_settings.html.haml +++ b/app/views/admin/order_cycles/_advanced_settings.html.haml @@ -1,22 +1,22 @@ .row .alpha.omega.sixteen.columns - %h3 Advanced Settings + %h3= t('.title') = form_for [main_app, :admin, @order_cycle] do |f| .row .six.columns.alpha = f.label "enterprise_preferred_product_selection_from_coordinator_inventory_only", t('admin.order_cycles.edit.choose_products_from') - .with-tip{'data-powertip' => "You can opt to restrict all available products (both incoming and outgoing), to only those in #{@order_cycle.coordinator.name}'s inventory."} - %a What's this? + .with-tip{'data-powertip' => t('.choose_product_tip', inventory: @order_cycle.coordinator.name)} + %a= t('admin.whats_this') .four.columns = f.radio_button :preferred_product_selection_from_coordinator_inventory_only, true - = f.label :preferred_product_selection_from_coordinator_inventory_only, "Coordinator's Inventory Only" + = f.label :preferred_product_selection_from_coordinator_inventory_only, t('.preferred_product_selection_from_coordinator_inventory_only_here') .six.columns.omega = f.radio_button :preferred_product_selection_from_coordinator_inventory_only, false - = f.label :preferred_product_selection_from_coordinator_inventory_only, "All Available Products" + = f.label :preferred_product_selection_from_coordinator_inventory_only, t('.preferred_product_selection_from_coordinator_inventory_only_all') .row .sixteen.columns.alpha.omega.text-center - %input{ type: 'submit', value: 'Save and Reload Page' } - or - %a{ href: "#", onClick: "toggleSettings()" } Close + %input{ type: 'submit', value: t('.save_reload') } + = t(:or) + %a{ href: "#", onClick: "toggleSettings()" }= t(:close) diff --git a/app/views/admin/order_cycles/_coordinator_fees.html.haml b/app/views/admin/order_cycles/_coordinator_fees.html.haml index 86e0d0a7af..a22deee37f 100644 --- a/app/views/admin/order_cycles/_coordinator_fees.html.haml +++ b/app/views/admin/order_cycles/_coordinator_fees.html.haml @@ -1,6 +1,6 @@ %ol.coordinator-fees %li{'ng-repeat' => 'enterprise_fee in order_cycle.coordinator_fees'} = select_tag 'order_cycle_coordinator_fee_{{ $index }}_id', nil, {'ng-model' => 'enterprise_fee.id', 'ng-options' => 'enterprise_fee.id as enterprise_fee.name for enterprise_fee in enterpriseFeesForEnterprise(order_cycle.coordinator_id)'} - = link_to 'Remove', '#', {'id' => 'order_cycle_coordinator_fee_{{ $index }}_remove', 'ng-click' => 'removeCoordinatorFee($event, $index)'} + = link_to t(:remove), '#', {'id' => 'order_cycle_coordinator_fee_{{ $index }}_remove', 'ng-click' => 'removeCoordinatorFee($event, $index)'} -= f.submit 'Add coordinator fee', 'ng-click' => 'addCoordinatorFee($event)' += f.submit t('.add'), 'ng-click' => 'addCoordinatorFee($event)' diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index ebe9e45905..f075c2cf33 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -3,55 +3,54 @@ -if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator = render 'coordinator_fees', f: f -%h2 Incoming +%h2= t('.incoming') %table.exchanges %thead %tr - %th Supplier + %th= t('.supplier') %th - Products + =t('.products') = surround '(', ')' do %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('incoming')"} - %span{'ng-show' => "OrderCycle.showProducts['incoming']"} Collapse all - %span{'ng-hide' => "OrderCycle.showProducts['incoming']"} Expand all - %th Receival details - %th Fees + %span{'ng-show' => "OrderCycle.showProducts['incoming']"}= t(:collapse_all) + %span{'ng-hide' => "OrderCycle.showProducts['incoming']"}= t(:expand_all) + %th= t('.receival_details') + %th= t('.fees') %th.actions %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.incoming_exchanges'} - = render 'exchange_form', :f => f, :type => 'supplier' + = render 'exchange_form', f: f, type: 'supplier' - if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator = render 'add_exchange_form', f: f, type: 'supplier' -%h2 Outgoing +%h2= t('.outgoing') %table.exchanges %thead %tr - %th Distributor + %th= t('.distributor') %th - Products + = t('.products') = surround '(', ')' do %a{href: '#', 'ng-click' => "OrderCycle.toggleAllProducts('outgoing')"} - %span{'ng-show' => "OrderCycle.showProducts['outgoing']"} Collapse all - %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"} Expand all - %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } } Tags - %th Pickup / Delivery details + %span{'ng-show' => "OrderCycle.showProducts['outgoing']"}= t(:collapse_all) + %span{'ng-hide' => "OrderCycle.showProducts['outgoing']"}= t(:expand_all) + %th{ ng: { if: 'enterprises[exchange.enterprise_id].managed || order_cycle.viewing_as_coordinator' } } + = t('.tags') + %th= t('.delivery_details') %th Fees %th.actions %tbody.panel-ctrl{ object: 'exchange', 'ng-repeat' => 'exchange in order_cycle.outgoing_exchanges'} - = render 'exchange_form', :f => f, :type => 'distributor' - + = render 'exchange_form', f: f, type: 'distributor' - if Enterprise.managed_by(spree_current_user).include? @order_cycle.coordinator = render 'add_exchange_form', f: f, type: 'distributor' .actions - %span{'ng-hide' => 'loaded()'} Loading... - + %span{'ng-hide' => 'loaded()'}= t(:loading) - unless Rails.env.production? #order-cycles-debug - %h2 Debug information + %h2= t('.debug_info') %pre loaded = {{ loaded() | json }} %hr/ diff --git a/app/views/admin/order_cycles/_name_and_timing_form.html.haml b/app/views/admin/order_cycles/_name_and_timing_form.html.haml index 39fa19f287..d081120210 100644 --- a/app/views/admin/order_cycles/_name_and_timing_form.html.haml +++ b/app/views/admin/order_cycles/_name_and_timing_form.html.haml @@ -1,13 +1,13 @@ .row .alpha.two.columns - = f.label :name + = f.label :name, t('.name') .six.columns.omega - if viewing_as_coordinator_of?(@order_cycle) = f.text_field :name, 'ng-model' => 'order_cycle.name', 'required' => true, 'ng-disabled' => '!loaded()' - else {{ order_cycle.name }} .two.columns - = f.label :orders_open_at, 'Orders open' + = f.label :orders_open_at, t('.orders_open') .omega.six.columns - if viewing_as_coordinator_of?(@order_cycle) = f.text_field :orders_open_at, 'datetimepicker' => 'order_cycle.orders_open_at', 'ng-model' => 'order_cycle.orders_open_at', 'ng-disabled' => '!loaded()' @@ -16,11 +16,11 @@ .row .alpha.two.columns - = f.label :coordinator + = f.label :coordinator, t('.coordinator') .six.columns.omega = @order_cycle.coordinator.name .two.columns - = f.label :orders_close_at, 'Orders close' + = f.label :orders_close, t('.orders_close') .six.columns.omega - if viewing_as_coordinator_of?(@order_cycle) = f.text_field :orders_close_at, 'datetimepicker' => 'order_cycle.orders_close_at', 'ng-model' => 'order_cycle.orders_close_at', 'ng-disabled' => '!loaded()' diff --git a/app/views/admin/order_cycles/_row.html.haml b/app/views/admin/order_cycles/_row.html.haml index d75a97bbb5..cbfde7f546 100644 --- a/app/views/admin/order_cycles/_row.html.haml +++ b/app/views/admin/order_cycles/_row.html.haml @@ -13,7 +13,7 @@ - if suppliers.count > 3 %span{'ofn-with-tip' => supplier_list} = suppliers.count - suppliers + = t('.suppliers') - else = supplier_list %td= order_cycle.coordinator.name @@ -23,12 +23,12 @@ - if distributors.count > 3 %span{'ofn-with-tip' => distributor_list} = distributors.count - distributors + = t('.distributors') - else = distributor_list %td.products - %span= "#{order_cycle.variants.count} variants" + %span= "#{order_cycle.variants.count} #{t('.variants')}" %td.actions = link_to '', main_app.edit_admin_order_cycle_path(order_cycle), class: 'edit-order-cycle icon-edit no-text' @@ -36,4 +36,4 @@ = link_to '', main_app.clone_admin_order_cycle_path(order_cycle), class: 'clone-order-cycle icon-copy no-text' - if can_delete?(order_cycle) %td.actions - = link_to '', main_app.admin_order_cycle_path(order_cycle), class: 'delete-order-cycle icon-trash no-text', :method => :delete, data: { confirm: "Are you sure?" } + = link_to '', main_app.admin_order_cycle_path(order_cycle), class: 'delete-order-cycle icon-trash no-text', :method => :delete, data: { confirm: t(:are_you_sure) } diff --git a/app/views/admin/order_cycles/_simple_form.html.haml b/app/views/admin/order_cycles/_simple_form.html.haml index a7a0363cd3..15303b1f5d 100644 --- a/app/views/admin/order_cycles/_simple_form.html.haml +++ b/app/views/admin/order_cycles/_simple_form.html.haml @@ -2,23 +2,23 @@ .row .alpha.two.columns - = label_tag 'Ready for' + = label_tag t('.ready_for') .six.columns - = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_time', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_time', 'placeholder' => 'Date / time', 'ng-model' => 'outgoing_exchange.pickup_time', 'size' => 30 + = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_time', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_time', 'placeholder' => t('.ready_for_placeholder'), 'ng-model' => 'outgoing_exchange.pickup_time', 'size' => 30 .two.columns - = label_tag 'Customer instructions' + = label_tag t('.customer_instructions') .six.columns.omega - = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_instructions', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_instructions', 'placeholder' => 'Pick-up or delivery notes', 'ng-model' => 'outgoing_exchange.pickup_instructions', 'size' => 30 + = text_field_tag 'order_cycle_outgoing_exchange_0_pickup_instructions', '', 'id' => 'order_cycle_outgoing_exchange_0_pickup_instructions', 'placeholder' => t('.customer_instructions_placeholder'), 'ng-model' => 'outgoing_exchange.pickup_instructions', 'size' => 30 -= label_tag 'Products' += label_tag t('.products') %table.exchanges %tbody{ng: {repeat: "exchange in order_cycle.incoming_exchanges"}} %tr.products %td{ ng: { include: "'admin/panels/exchange_supplied_products.html'" } } %br/ -= label_tag 'Fees' += label_tag t('.fees') = render 'coordinator_fees', f: f .actions - %span{'ng-hide' => 'loaded()'} Loading... + %span{'ng-hide' => 'loaded()'}= t(:loading) diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml index 4712566dfd..34f64c1ee7 100644 --- a/app/views/admin/order_cycles/edit.html.haml +++ b/app/views/admin/order_cycles/edit.html.haml @@ -12,26 +12,24 @@ - if can? :notify_producers, @order_cycle %li - = button_to "Notify producers", main_app.notify_producers_admin_order_cycle_path, :id => 'admin_notify_producers', :confirm => 'Are you sure?' + = button_to "Notify producers", main_app.notify_producers_admin_order_cycle_path, :id => 'admin_notify_producers', :confirm => t(:are_you_sure) %li %button#toggle_settings{ onClick: 'toggleSettings()' } - Advanced Settings + = t('.advanced_settings') %i.icon-chevron-down - #advanced_settings{ hidden: true } = render partial: "/admin/order_cycles/advanced_settings" %h1 = t :edit_order_cycle - - ng_controller = order_cycles_simple_form ? 'AdminSimpleEditOrderCycleCtrl' : 'AdminEditOrderCycleCtrl' = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: "Update", ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty" } } - %input.red{ type: "button", value: "Update and Close", ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } } + %input.red{ type: "button", value: t(:update), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty" } } + %input.red{ type: "button", value: t('.update_and_close'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form diff --git a/app/views/admin/order_cycles/index.html.haml b/app/views/admin/order_cycles/index.html.haml index 824aa66ee8..989983b5b0 100644 --- a/app/views/admin/order_cycles/index.html.haml +++ b/app/views/admin/order_cycles/index.html.haml @@ -3,7 +3,7 @@ = content_for :page_actions do %li#new_order_cycle_link - = button_link_to t(:new_order_cycle), main_app.new_admin_order_cycle_path, :icon => 'icon-plus', :id => 'admin_new_order_cycle_link' + = button_link_to t(:new_order_cycle), main_app.new_admin_order_cycle_path, icon: 'icon-plus', id: 'admin_new_order_cycle_link' - if @show_more %li = button_link_to t(:label_less), main_app.admin_order_cycles_path diff --git a/app/views/admin/order_cycles/new.html.haml b/app/views/admin/order_cycles/new.html.haml index 4e5a95544c..6bc0946f01 100644 --- a/app/views/admin/order_cycles/new.html.haml +++ b/app/views/admin/order_cycles/new.html.haml @@ -7,7 +7,7 @@ = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - %input.red{ type: "button", value: "Create", ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } } + %input.red{ type: "button", value: t(:create), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? 'Cancel' : 'Close'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - if order_cycles_simple_form diff --git a/app/views/admin/producer_properties/_form.html.haml b/app/views/admin/producer_properties/_form.html.haml index dcd83f8ec4..249301ae40 100644 --- a/app/views/admin/producer_properties/_form.html.haml +++ b/app/views/admin/producer_properties/_form.html.haml @@ -4,8 +4,8 @@ %table.index.sortable{"data-hook" => "", "data-sortable-link" => main_app.update_positions_admin_enterprise_producer_properties_url(@enterprise)} %thead %tr{"data-hook" => "producer_properties_header"} - %th{colspan: "2"} Property - %th Value + %th{colspan: "2"}= t('.property') + %th= t('.value') %th.actions %tbody#producer_properties{"data-hook" => ""} = f.fields_for :producer_properties do |pp_form| diff --git a/app/views/admin/producer_properties/index.html.haml b/app/views/admin/producer_properties/index.html.haml index d898860cb1..c66f02a32e 100644 --- a/app/views/admin/producer_properties/index.html.haml +++ b/app/views/admin/producer_properties/index.html.haml @@ -1,17 +1,14 @@ - content_for :page_title do = "#{@enterprise.name}:" - Producer Properties - + = t('.title') - content_for :page_actions do %ul.tollbar.inline-menu %li = link_to_add_fields t(:add_producer_property), 'tbody#producer_properties', class: 'icon-plus button' - = render 'spree/shared/error_messages', target: @enterprise - = form_for @enterprise, url: main_app.admin_enterprise_path(@enterprise), method: :put do |f| = render 'form', f: f diff --git a/app/views/admin/shared/_user_guide_link.html.haml b/app/views/admin/shared/_user_guide_link.html.haml index 6081422aba..cd1b0dba86 100644 --- a/app/views/admin/shared/_user_guide_link.html.haml +++ b/app/views/admin/shared/_user_guide_link.html.haml @@ -1 +1 @@ -= button_link_to "User Guide", "http://www.openfoodnetwork.org/platform/user-guide/", :icon => 'icon-external-link', target: '_blank' += button_link_to t('.user_guide'), "http://www.openfoodnetwork.org/platform/user-guide/", icon: 'icon-external-link', target: '_blank' diff --git a/app/views/admin/variant_overrides/_loading_flash.html.haml b/app/views/admin/variant_overrides/_loading_flash.html.haml index c543a5517c..2baa04a473 100644 --- a/app/views/admin/variant_overrides/_loading_flash.html.haml +++ b/app/views/admin/variant_overrides/_loading_flash.html.haml @@ -1,3 +1,3 @@ %div.sixteen.columns.alpha.omega#loading{ ng: { cloak: true, if: 'hub_id && products.length == 0 && RequestMonitor.loading' } } %img.spinner{ src: "/assets/spinning-circles.svg" } - %h1 LOADING INVENTORY + %h1= t('.loading_inventory') diff --git a/app/views/admin/variant_overrides/_show_more.html.haml b/app/views/admin/variant_overrides/_show_more.html.haml index 21e927e443..5e8274d99c 100644 --- a/app/views/admin/variant_overrides/_show_more.html.haml +++ b/app/views/admin/variant_overrides/_show_more.html.haml @@ -1,5 +1,5 @@ -# %show-more.text-center{ data: "filteredProducts", limit: "productLimit", increment: "10" } .text-center{ ng: { show: "filteredProducts.length > productLimit" } } - %input{ type: 'button', value: 'Show More', ng: { click: 'productLimit = productLimit + 10' } } - or - %input{ type: 'button', value: "Show All ({{ filteredProducts.length - productLimit }} More)", ng: { click: 'productLimit = filteredProducts.length' } } + %input{ type: 'button', value: t(:show_more), ng: { click: 'productLimit = productLimit + 10' } } + = t(:or) + %input{ type: 'button', value: "#{t(:show_all)} ({{ filteredProducts.length - productLimit }} More)", ng: { click: 'productLimit = filteredProducts.length' } } diff --git a/config/locales/en.yml b/config/locales/en.yml index 6f04c26284..949060ab36 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -70,9 +70,17 @@ en: say_no: "No" say_yes: "Yes" then: then - sort_order_cycles_on_shopfront_by: "Sort Order Cycles On Shopfront By" - + required_fields: Required fields are denoted with an asterisk + select_continue: Select and Continue + remove: Remove + or: or + collapse_all: Collapse all + expand_all: Expand all + loading: Loading... + show_more: Show more + show_all: Show all + cancel: Cancel admin: # Common properties / models @@ -131,6 +139,31 @@ en: update_address: 'Update Address' confirm_delete: 'Sure to delete?' + cache_settings: + show: + distributor: Distributor + order_cycle: Order Cycle + status: Status + diff: Diff + + contents: + edit: + title: Content + + enterprise_fees: + index: + title: Entreprise Fees + enterprise: Enterprise + fee_type: Fee Type + name: Name + tax_category: Tax Category + calculator: Calculator + calculator_values: Calculator Values + + enterprise_groups: + index: + new_button: New Enterprise Group + products: bulk_edit: unit: Unit @@ -142,6 +175,8 @@ en: av_on: "Av. On" variant_overrides: + loading_flash: + loading_inventory: LOADING INVENTORY index: title: Inventory description: Use this page to manage inventories for your enterprises. Any product details set here will override those set on the 'Products' page @@ -198,6 +233,82 @@ en: status: Status manage: Manage form: + about_us: + desc_short: Short Description + desc_short_placeholder: Tell us about your enterprise in one or two sentences + desc_long: About Us + desc_long_placeholder: Tell customers about yourself. This information appears on your public profile. + business_details: + abn: ABN + abn_placeholder: eg. 99 123 456 789 + acn: ACN + acn_placeholder: eg. 123 456 789 + contact: + name: Fullname + name_placeholder: eg. Gustav Plum + email_address: Email Address + email_address_placeholder: eg. gustav@truffles.com + phone: Phone + phone_placeholder: eg. 98 7654 3210 + website: Website + website_placeholder: eg. www.truffles.com + enterprise_fees: + name: Name + fee_type: Fee Type + manage_fees: Manage Enterprise Fees + no_fees_yet: You don't have any enterprise fees yet. + create_button: Create One Now + images: + logo: Logo + promo_image_placeholder: 'This image is displayed in "About Us"' + promo_image_note1: 'PLEASE NOTE:' + promo_image_note2: Any promo image uploaded here will be cropped to 1200 x 260. + promo_image_note3: The promo image is displayed at the top of an enterprise's profile page and pop-ups. + inventory_settings: + text1: You may opt to manage stock levels and prices in via your + inventory: inventory + text2: "If you are using the inventory tool, you can select whether new products \ + added by your suppliers need to be added to your inventory before they can be \ + stocked. If you are not using your inventory to manage your products you should \ + select the 'recommended' option below:" + preferred_product_selection_from_inventory_only_yes: New products can be put into my shopfront (recommended) + preferred_product_selection_from_inventory_only_no: New products must be added to my inventory before they can be put into my shopfront + payment_methods: + name: Name + applies: Applies? + manage: Manage Payment Methods + not_method_yet: You don't have any payment methods yet. + create_button: Create New Payment Method + create_one_button: Create One Now + primary_details: + name: Name + name_placeholder: eg. Professor Plum's Biodynamic Truffles + groups: Groups + groups_tip: Select any groups or regions that you are a member of. This will help customers find your enterprise. + groups_placeholder: Start typing to search available groups... + primary_producer: Primary Producer? + primary_producer_tip: Select 'Producer' if you are a primary producer of food. + producer: Producer + any: Any + none: None + own: Own + sells: Sells + sells_tip: "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
" + visible_in_seach: Visible in search? + visible_in_seach_tip: Determines whether this enterprise will be visible to customers when searching the site. + visible: Visible + not_visible: Not visible + permalink: Permalink (no spaces) + permalink_tip: "This permalink is used to create the url to your shop: {{link}} your-shop-name/shop" + link_to_front: Link to shop front + link_to_front_tip: A direct link to your shopfront on the Open Food Network. + shipping_methods: + name: Name + applies: Applies? + manage: Manage Shipping Methods + create_button: Create New Shipping Method + create_one_button: Create One Now + no_method_yet: You don't have any shipping methods yet. shop_preferences: shopfront_requires_login: "Publicly visible shopfront?" shopfront_requires_login_tip: "Choose whether customers must login to view the shopfront or if it's visible to everybody." @@ -207,6 +318,145 @@ en: allow_guest_orders_tip: "Allow checkout as guest or require a registered user." allow_guest_orders_false: "Require login to order" allow_guest_orders_true: "Allow guest checkout" + shopfront_message_placeholder: \ + An optional explanation for customers detailing how your shopfront works, \ + to be displayed above the product list on your shop page. + shopfront_closed_message_placeholder: \ + A message which provides a more detailed explanation about why your shop is \ + closed and/or when customers can expect it to open again. This is displayed \ + on your shop only when you have no active order cycles (ie. shop is closed). + open_date: Open Date + close_date: Close Date + social: + twitter_placeholder: eg. @the_prof + tag_rules: + default_rules: + by_default: By Default + no_rules_yet: No default rules apply yet + add_new_button: '+ Add A New Default Rule' + no_tags_yet: No tags apply to this enterprise yet + no_rules_yet: No rules apply to this tag yet + for_customers_tagged: 'For customers tagged:' + add_new_rule: '+ Add A New Rule' + add_new_tag: '+ Add A New Tag' + users: + email_confirmation_text: Email confirmation is pending.
We've sent a confirmation email to + resend: Resend + owner: 'Owner' + owner_tip: The primary user responsible for this enterprise. + notifications: Notifications + notifications_tip: Notifications about orders will be send to this email address. + notifications_placeholder: eg. gustav@truffles.com + notifications_note: 'Note: A new email address may need to be confirmed prior to use' + managers: Managers + managers_tip: The other users with permission to manage this enterprise. + actions: + edit_profile: Edit Profile + properties: Properties + payment_methods: Payment Methods + payment_methods_tip: This enterprise has no payment methods + shipping_methods: Shipping Methods + shipping_methods_tip: This enterprise has shipping methods + enterprise_fees: Enterprise Fees + enterprise_fees_tip: This enterprise has no fees + admin_index: + name: Name + role: Role + sells: Sells + visible: Visible? + owner: Owner + producer: Producer + change_type_form: + producer_profile: Producer Profile + connect_ofn: Connect through OFN + always_free: ALWAYS FREE + producer_description_text: Add your products to Open Food Network, allowing hubs to stock your products in their stores. + producer_shop: Producer Shop + sell_your_produce: Sell your own produce + sell_description_text: Sell your products directly to customers through your very own Open Food Network shopfront. + sell_description_text2: A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'. + producer_hub: Producer Hub + producer_hub_text: Sell produce from self and others + producer_hub_description_text: Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network. + profile: Profile Only + get_listing: Get a listing + profile_description_text: People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings. + hub_shop: Hub Shop + hub_shop_text: Sell produce from others + hub_shop_description_text: Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network. + choose_option: Please choose one of the options above. + change_now: Change now + enterprise_user_index: + search_placeholder: Search By Name + manage: Manage + new_form: + owner: Owner + owner_tip: The primary user responsible for this enterprise. + i_am_producer: I am a Producer + contact_name: Contact Name + edit: + editing: 'Editing:' + back_link: Back to enterprises list + index: + title: Enterprises + new_enterprise: New Enterprise + new: + title: New Enterprise + back_link: Back to enterprises list + welcome: + welcome_title: Welcome to the Open Food Network! + welcome_text: You have successfully created a + next_step: Next step + choose_starting_point: 'Choose your starting point:' + order_cycles: + advanced_settings: + title: Advanced Settings + choose_product_tip: You can opt to restrict all available products (both incoming and outgoing), to only those in {{inventory}}'s inventory. + preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only + preferred_product_selection_from_coordinator_inventory_only_all: All Available Products + save_reload: Save and Reload Page + coordinator_fees: + add: Add coordinator fee + form: + incoming: Incoming + supplier: Supplier + products: Products + receival_details: Receival details + fees: Fees + outgoing: Outgoing + distributor: Distributor + products: Products + tags: Tags + delivery_detaisl: Pickup / Delivery details + debug_info: Debug information + name_and_timing_form: + name: Name + orders_open: Orders open at + coordinator: Coordinator + order_closes: Orders close + row: + suppliers: suppliers + distributors: distributors + variants: variants + simple_form: + ready_for: Ready for + ready_for_placeholder: Date / time + customer_instructions: Customer instructions + customer_instructions_placeholder: Pick-up or delivery notes + products: Products + fees: Fees + edit: + advanced_settings: Advanced Settings + update_and_close: Update and Close + producer_properties: + form: + property: Property + value: Value + index: + title: Producer Properties + shared: + user_guide_link: + user_guide: User Guide home: hubs: @@ -256,10 +506,14 @@ en: phone: Phone next: Next address: Address + address_placeholder: eg. 123 High Street address2: Address (contd.) city: City + city_placeholder: eg. Northcote state: State postcode: Postcode + postcode_placeholder: eg. 3070 + state: State country: Country unauthorized: Unauthorized terms_of_service: "Terms of service" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0594d8a112..74fdc54336 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -53,6 +53,17 @@ fr: say_yes: "Oui" then: puis sort_order_cycles_on_shopfront_by: "Trier les cycles de vente par" + required_fields: "Les champs obligatoires sont annotés d'une astérisque" + select_continue: Sélectionner et Continuer + remove: Supprimer + or: ou + collapse_all: Réduire + expand_all: Etendre + loading: Chargement... + show_more: Voir plus + show_all: Voir tout + cancel: Annuler + admin: date: Date email: Email @@ -100,6 +111,27 @@ fr: select_country: 'Choisir le pays' select_state: 'Choisir le département' edit: 'Modifier' + cache_settings: + show: + distributor: Distributeur + order_cycle: Cycle de vente + status: Statut + diff: Diff + contents: + edit: + title: Contenu + enterprise_fees: + index: + title: Marges de l'entreprise + enterprise: Entreprise + fee_type: Type de marge + name: Nom + tax_category: TVA appliquée + calculator: Calculateur + calculator_values: Valeurs applicables + enterprise_groups: + index: + new_button: Nouveau groupe d'entreprise products: bulk_edit: unit: Unité @@ -110,6 +142,8 @@ fr: available_on: Disponible sur av_on: "Disp. sur" variant_overrides: + loading_flash: + loading_inventory: LOADING INVENTORY index: title: Stock description: Utilisez cette page pour gérer le catalogue de votre entreprise. Les détails produits saisis ici remplaceront ceux de la page "Produit" pour votre entreprise uniquement. @@ -162,11 +196,231 @@ fr: status: Statut manage: Gérer form: + about_us: + desc_short: Description courte + desc_short_placeholder: Dites nous à propos de votre entreprise en 2 lignes + desc_long: Description publique + desc_long_placeholder: Décrivez-vous à vos clients. Cette information apparaîtra sur votre profil public. + business_details: + abn: ABN + abn_placeholder: "ex: 99 123 456 789" + acn: ACN + acn_placeholder: "ex: 123 456 789" + contact: + name: Prénom/Nom + name_placeholder: "ex: Maurice Batot" + email_address: Email Address + email_address_placeholder: "ex: maurice@tomates.fr" + phone: Téléphone + phone_placeholder: "ex: 98 7654 3210" + website: Site Web + website_placeholder: "ex: www.tomates.fr" + enterprise_fees: + name: Nom + fee_type: Type de marge + manage_fees: Gérer vos marges + no_fees_yet: Vous n'avez pas encore de marges définies. + create_button: Créer une nouvelle marge + images: + logo: Logo + promo_image_placeholder: 'Cette image est affichée dans la partie "A Propos"' + promo_image_note1: 'NOTES :' + promo_image_note2: Toutes les images uploadées ici seront coupées pour 1200x260 pixels. + promo_image_note3: L'image promotionelle est affichée en haut de la page profil de l'entreprise et sur les pop-ups. + inventory_settings: + text1: Vous pouvez gérer votre stock et vos prix via votre + inventory: inventaire + text2: "If you are using the inventory tool, you can select whether new products \ + added by your suppliers need to be added to your inventory before they can be \ + stocked. If you are not using your inventory to manage your products you should \ + select the 'recommended' option below:" + preferred_product_selection_from_inventory_only_yes: Les nouveaux produits peuvent être mis dans mon magasin (Recommendé) + preferred_product_selection_from_inventory_only_no: Les nouveaux produits doivent être ajouté dans mon magasin avant de pouvoir être ajouté dans mon magasin + payment_methods: + name: Nom + applies: Applies? + manage: Gérer les moyens de paiement + not_method_yet: Vous n'avez encore aucun moyen de paiement. + create_button: Ajouter un nouveau moyen de paiement + create_one_button: Ajouter un nouveau moyen de paiement primary_details: + name: Nom + name_placeholder: 'ex: Les Oranges Bleues' + groups: Groupes + groups_tip: Select any groups or regions that you are a member of. This will help customers find your enterprise. + groups_placeholder: Commencer à taper dans rechercher les groupes disponibles... + primary_producer: Primary Producer + primary_producer_tip: Select 'Producer' if you are a primary producer of food. + producer: Producteur + any: Any + none: None + own: Own + sells: Sells + sells_tip: "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
" + visible_in_seach: Visible dans la recherche? + visible_in_seach_tip: Determines whether this enterprise will be visible to customers when searching the site. + visible: Visible + not_visible: Pas visible + permalink: Lien (pas d'espace) + permalink_tip: "This permalink is used to create the url to your shop: {{link}} your-shop-name/shop" + link_to_front: Link to shop front + link_to_front_tip: A direct link to your shopfront on the Open Food Network. + shipping_methods: + name: Nom + applies: Applies? + manage: Gérer les moyens de livraison + create_button: Ajouter un nouveau moyen de livraison + create_one_button: Ajouter un nouveau moyen de livraison + no_method_yet: Vous n'avez encore aucun moyen de livraison défini. + shop_preferences: shopfront_requires_login: "Cette boutique exige un login?" shopfront_requires_login_tip: "Les acheteurs doivent-ils se connecter pour accéder à la boutique?" shopfront_requires_login_false: "Public" shopfront_requires_login_true: "Demander aux acheteurs de se connecter" + allow_guest_orders: "Guest orders" + allow_guest_orders_tip: "Allow checkout as guest or require a registered user." + allow_guest_orders_false: "Require login to order" + allow_guest_orders_true: "Allow guest checkout" + shopfront_message_placeholder: \ + An optional explanation for customers detailing how your shopfront works, \ + to be displayed above the product list on your shop page. + shopfront_closed_message_placeholder: \ + A message which provides a more detailed explanation about why your shop is \ + closed and/or when customers can expect it to open again. This is displayed \ + on your shop only when you have no active order cycles (ie. shop is closed). + open_date: Open Date + close_date: Close Date + social: + twitter_placeholder: 'ex: @lesorangesbleues' + tag_rules: + default_rules: + by_default: Par défaut + no_rules_yet: Aucune règle encore ajoutée + add_new_button: + Ajouter une nouvelle règle + no_tags_yet: Aucun tag encore défini pour cette entreprise + no_rules_yet: Aucun régle encore définie pour ce tag + for_customers_tagged: 'For customers tagged:' + add_new_rule: '+ Ajouter une nouvelle régle' + add_new_tag: '+ Ajouter un nouveau tag' + users: + email_confirmation_text: Email confirmation is pending.
We've sent a confirmation email to + resend: Renvoyer + owner: Propriétaire + owner_tip: Le premier utilisateur responsable pour l'entreprise. + notifications: Notifications + notifications_tip: Notifications about orders will be send to this email address. + notifications_placeholder: 'ex: gustav@truffles.com' + notifications_note: 'Note: A new email address may need to be confirmed prior to use' + managers: Managers + managers_tip: The other users with permission to manage this enterprise. + actions: + edit_profile: Mettre à jour le profil + properties: Propriétés + payment_methods: Méthodes de paiement + payment_methods_tip: Cette entreprise n'a pas de méthode de paiement + shipping_methods: Méthodes de livraison + shipping_methods_tip: Cette entreprise n'a pas de méthode de livraisons + enterprise_fees: Enterprise Fees + enterprise_fees_tip: This enterprise has no fees + admin_index: + name: Nom + role: Role + sells: Sells + visible: Visible? + owner: Owner + producer: Producer + change_type_form: + producer_profile: Producer Profile + connect_ofn: Connect through OFN + always_free: ALWAYS FREE + producer_description_text: Add your products to Open Food Network, allowing hubs to stock your products in their stores. + producer_shop: Producer Shop + sell_your_produce: Sell your own produce + sell_description_text: Sell your products directly to customers through your very own Open Food Network shopfront. + sell_description_text2: A Producer Shop is for your produce only, if you want to sell produce grown/produced off site, select 'Producer Hub'. + producer_hub: Producer Hub + producer_hub_text: Sell produce from self and others + producer_hub_description_text: Your enterprise is the backbone of your local food system. You can sell your own produce as well as produce aggregated from other enterprises through your shopfront on the Open Food Network. + profile: Profile Only + get_listing: Get a listing + profile_description_text: People can find and contact you on the Open Food Network. Your enterprise will be visible on the map, and will be searchable in listings. + hub_shop: Hub Shop + hub_shop_text: Sell produce from others + hub_shop_description_text: Your enterprise is the backbone of your local food system. You aggregate produce from other enterprises and can sell it through your shop on the Open Food Network. + choose_option: Please choose one of the options above. + change_now: Change now + enterprise_user_index: + search_placeholder: Search By Name + manage: Manage + new_form: + owner: Owner + owner_tip: The primary user responsible for this enterprise. + i_am_producer: I am a Producer + contact_name: Nom du contact + edit: + editing: 'Editing:' + back_link: Retour à la liste d'entreprise + index: + title: Enterprises + new_enterprise: Ajouter une nouvelle entreprise + new: + title: Nouvelle entreprise + back_link: Retour à la liste d'entreprise + welcome: + welcome_title: Bienvenue chez Open Food France ! + welcome_text: Vous avez bien créé une + next_step: Etape suivante + choose_starting_point: 'Choose your starting point:' + order_cycles: + advanced_settings: + title: Advanced Settings + choose_product_tip: You can opt to restrict all available products (both incoming and outgoing), to only those in {{inventory}}'s inventory. + preferred_product_selection_from_coordinator_inventory_only_here: Coordinator's Inventory Only + preferred_product_selection_from_coordinator_inventory_only_all: All Available Products + save_reload: Save and Reload Page + coordinator_fees: + add: Add coordinator fee + form: + incoming: Incoming + supplier: Supplier + products: Products + receival_details: Receival details + fees: Fees + outgoing: Outgoing + distributor: Distributor + products: Products + tags: Tags + delivery_detaisl: Pickup / Delivery details + debug_info: Debug information + name_and_timing_form: + name: Name + orders_open: Orders open + coordinator: Coordinator + order_closes: Orders close + row: + suppliers: suppliers + distributors: distributors + variants: variants + simple_form: + ready_for: Ready for + ready_for_placeholder: Date / time + customer_instructions: Customer instructions + customer_instructions_placeholder: Pick-up or delivery notes + products: Products + fees: Fees + edit: + advanced_settings: Advanced Settings + update_and_close: Update and Close + producer_properties: + form: + property: Propriété + value: Valeur + index: + title: Producer Properties + shared: + user_guide_link: + user_guide: Guide l'utilisateur + home: hubs: show_closed_shops: "Aficher les boutiques fermées" @@ -211,10 +465,14 @@ fr: phone: Téléphone next: Suivant address: Adresse + address_placeholder: "ex: 16, rue du Marché" address2: Adresse (suite) city: Ville + city_placeholder: "ex: Lille" state: Département postcode: Code postal + postcode_placeholder: "ex: 59000" + state: Région country: Pays unauthorized: Non authorisé terms_of_service: "Conditions d'utilisation" From a9f01c0f0df23f890b0112ea10141aead5c0b88f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 11 Jan 2017 11:15:44 +1100 Subject: [PATCH 09/12] Fix typos in en.yml --- config/locales/en.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 949060ab36..da7f06a076 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -244,7 +244,7 @@ en: acn: ACN acn_placeholder: eg. 123 456 789 contact: - name: Fullname + name: Name name_placeholder: eg. Gustav Plum email_address: Email Address email_address_placeholder: eg. gustav@truffles.com @@ -294,8 +294,8 @@ en: own: Own sells: Sells sells_tip: "None - enterprise does not sell to customers directly.
Own - Enterprise sells own products to customers.
Any - Enterprise can sell own or other enterprises products.
" - visible_in_seach: Visible in search? - visible_in_seach_tip: Determines whether this enterprise will be visible to customers when searching the site. + visible_in_search: Visible in search? + visible_in_search_tip: Determines whether this enterprise will be visible to customers when searching the site. visible: Visible not_visible: Not visible permalink: Permalink (no spaces) @@ -667,6 +667,8 @@ en: order_payment_paypal_successful: Your payment via PayPal has been processed successfully. order_hub_info: Hub Info + bom_tip: "Use this page to alter product quantities across multiple orders. Products may also be removed from orders entirely, if required." + unsaved_changes_warning: "Unsaved changes exist and will be lost if you continue." unsaved_changes_error: "Fields with red borders contain errors." From e899633affc38c5dff89d5cab7cd7898635b0624 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 11 Jan 2017 14:48:05 +1100 Subject: [PATCH 10/12] Merge duplicate locale entry admin.enterprises.index --- config/locales/en.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index da7f06a076..1b31b5c054 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -228,7 +228,9 @@ en: enterprises: index: - producer?: Producer? + title: Enterprises + new_enterprise: New Enterprise + producer?: "Producer?" package: Package status: Status manage: Manage @@ -397,9 +399,6 @@ en: edit: editing: 'Editing:' back_link: Back to enterprises list - index: - title: Enterprises - new_enterprise: New Enterprise new: title: New Enterprise back_link: Back to enterprises list From 44970a13bb482d4c5fc9c87ed9bb6b72a8605ad2 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 13 Jan 2017 10:21:25 +1100 Subject: [PATCH 11/12] Fix translation of email confirmation notice The `_html` suffix was missing leading to `
` being displayed in plain text. The new version also integrates the email address as a variable in the translation. --- app/views/admin/enterprises/form/_users.html.haml | 3 +-- config/locales/en.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/views/admin/enterprises/form/_users.html.haml b/app/views/admin/enterprises/form/_users.html.haml index eea13440a6..a0b5b7e662 100644 --- a/app/views/admin/enterprises/form/_users.html.haml +++ b/app/views/admin/enterprises/form/_users.html.haml @@ -4,8 +4,7 @@ -if @enterprise.pending_any_confirmation? .alert-box - email = @enterprise.confirmed? ? @enterprise.unconfirmed_email : @enterprise.email - = t('.email_confirmation_text') - %strong= "#{email}." + = t('.email_confirmation_notice_html', {email: "#{email}".html_safe}) = link_to(t('.resend'), main_app.enterprise_confirmation_path(enterprise: { id: @enterprise.id, email: email } ), method: :post) %a.close{ href: "#" } × diff --git a/config/locales/en.yml b/config/locales/en.yml index 1b31b5c054..902d32e35c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -342,7 +342,7 @@ en: add_new_rule: '+ Add A New Rule' add_new_tag: '+ Add A New Tag' users: - email_confirmation_text: Email confirmation is pending.
We've sent a confirmation email to + email_confirmation_notice_html: "Email confirmation is pending. We've sent a confirmation email to %{email}." resend: Resend owner: 'Owner' owner_tip: The primary user responsible for this enterprise. From 017916b1933e4d6cd0b09acbca6bb8c87d7b1eb4 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 5 Jan 2017 12:17:24 +1100 Subject: [PATCH 12/12] Enterprise distributing_products scope uses INNER JOINS instead of OUTER JOINS --- app/models/enterprise.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 840477185f..e9acbd51f6 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -163,10 +163,18 @@ class Enterprise < ActiveRecord::Base } scope :distributing_products, lambda { |products| - with_distributed_products_outer.with_order_cycles_and_exchange_variants_outer. - where('product_distributions.product_id IN (?) OR spree_variants.product_id IN (?)', products, products). - select('DISTINCT enterprises.*') + # TODO: remove this when we pull out product distributions + pds = joins("INNER JOIN product_distributions ON product_distributions.distributor_id = enterprises.id"). + where("product_distributions.product_id IN (?)", products).select('DISTINCT enterprises.id') + + exs = joins("INNER JOIN exchanges ON (exchanges.receiver_id = enterprises.id AND exchanges.incoming = 'f')"). + joins('INNER JOIN exchange_variants ON (exchange_variants.exchange_id = exchanges.id)'). + joins('INNER JOIN spree_variants ON (spree_variants.id = exchange_variants.variant_id)'). + where('spree_variants.product_id IN (?)', products).select('DISTINCT enterprises.id') + + where(id: pds | exs) } + scope :managed_by, lambda { |user| if user.has_spree_role?('admin') scoped