solidus_i18n 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.hound.yml +25 -0
- data/.rubocop.yml +7 -0
- data/.travis.yml +12 -0
- data/CONTRIBUTING.md +70 -0
- data/Gemfile +13 -0
- data/Guardfile +11 -0
- data/LICENSE.md +26 -0
- data/README.md +74 -0
- data/Rakefile +85 -0
- data/app/assets/javascripts/spree/backend/solidus_i18n.js +2 -0
- data/app/assets/javascripts/spree/backend/translations.js.coffee +5 -0
- data/app/assets/javascripts/spree/frontend/cart_decorator.js.coffee +5 -0
- data/app/assets/javascripts/spree/frontend/locale.js.coffee +3 -0
- data/app/assets/javascripts/spree/frontend/solidus_i18n.js +2 -0
- data/app/assets/stylesheets/spree/backend/solidus_i18n.css +8 -0
- data/app/assets/stylesheets/spree/frontend/solidus_i18n.css +8 -0
- data/app/controllers/spree/admin/general_settings_controller_decorator.rb +12 -0
- data/app/controllers/spree/api/base_controller_decorator.rb +3 -0
- data/app/controllers/spree/base_controller_decorator.rb +3 -0
- data/app/controllers/spree/locale_controller_decorator.rb +6 -0
- data/app/helpers/solidus_i18n/locale_helper.rb +31 -0
- data/app/overrides/spree/admin/general_settings/edit/localization_settings.html.erb.deface +20 -0
- data/app/overrides/spree/shared/_main_nav_bar/cart_link.html.erb.deface +9 -0
- data/app/overrides/spree/shared/_main_nav_bar/locale_selector.html.erb.deface +16 -0
- data/bin/rails +7 -0
- data/config/initializers/country_names.rb +51 -0
- data/config/initializers/routing_filter.rb +2 -0
- data/config/locales/bg.yml +1330 -0
- data/config/locales/ca.yml +1334 -0
- data/config/locales/cs.yml +1363 -0
- data/config/locales/da.yml +1336 -0
- data/config/locales/de-CH.yml +1288 -0
- data/config/locales/de.yml +1477 -0
- data/config/locales/en-AU.yml +1334 -0
- data/config/locales/en-GB.yml +1338 -0
- data/config/locales/en-IN.yml +1336 -0
- data/config/locales/en-NZ.yml +1334 -0
- data/config/locales/es-CL.yml +1398 -0
- data/config/locales/es-EC.yml +1338 -0
- data/config/locales/es-MX.yml +1337 -0
- data/config/locales/es.yml +1338 -0
- data/config/locales/et.yml +1316 -0
- data/config/locales/fa.yml +1163 -0
- data/config/locales/fi.yml +1352 -0
- data/config/locales/fr.yml +1588 -0
- data/config/locales/id.yml +1335 -0
- data/config/locales/it.yml +1395 -0
- data/config/locales/ja.yml +1336 -0
- data/config/locales/ko.yml +1294 -0
- data/config/locales/lv.yml +1328 -0
- data/config/locales/nb.yml +1339 -0
- data/config/locales/nl.yml +1338 -0
- data/config/locales/pl.yml +1345 -0
- data/config/locales/pt-BR.yml +1364 -0
- data/config/locales/pt.yml +1290 -0
- data/config/locales/ro.yml +1335 -0
- data/config/locales/ru.yml +1400 -0
- data/config/locales/sk.yml +1345 -0
- data/config/locales/sl-SI.yml +1288 -0
- data/config/locales/sv.yml +1372 -0
- data/config/locales/th.yml +1330 -0
- data/config/locales/tr.yml +1291 -0
- data/config/locales/uk.yml +1447 -0
- data/config/locales/vi.yml +1290 -0
- data/config/locales/zh-CN.yml +1345 -0
- data/config/locales/zh-TW.yml +1293 -0
- data/config/routes.rb +6 -0
- data/db/migrate/20150609154031_remove_translations_from_spree_tables.rb +65 -0
- data/lib/generators/solidus_i18n/install/install_generator.rb +27 -0
- data/lib/solidus_i18n/configuration.rb +9 -0
- data/lib/solidus_i18n/controller_locale_helper.rb +29 -0
- data/lib/solidus_i18n/engine.rb +45 -0
- data/lib/solidus_i18n/locale.rb +13 -0
- data/lib/solidus_i18n/utils.rb +56 -0
- data/lib/solidus_i18n/version.rb +18 -0
- data/lib/solidus_i18n.rb +8 -0
- data/lib/tasks/solidus_i18n/upgrade.rake +43 -0
- data/solidus_i18n.gemspec +46 -0
- data/spec/controllers/locales_controller_spec.rb +24 -0
- data/spec/features/admin/translations_spec.rb +33 -0
- data/spec/features/russian_errors_translation_spec.rb +17 -0
- data/spec/features/translation_spec.rb +31 -0
- data/spec/features/translations_spec.rb +28 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/support/capybara.rb +11 -0
- data/spec/support/database_cleaner.rb +23 -0
- data/spec/support/factory_girl.rb +5 -0
- data/spec/support/i18n.rb +5 -0
- data/spec/support/spree.rb +12 -0
- metadata +411 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ed8e33f5b243d4064d181a50c9ddc3969cb8c7c1
|
4
|
+
data.tar.gz: d44330025193250d62aabf963178adaaffc5d510
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 60b20095c44e83638e94d8fc409ec76cfd6d1a64e2123c2f747e7388a3ce0ee3bc7d4fc704ac29ee041c57f875d41f0d4756d8091a56c4baa6a494da29176e02
|
7
|
+
data.tar.gz: e80049c2f3faa448c391ed4a8ebca5c272cf6fd7769b3f5e7ef61377746cd981df8fba5f1559023276b9aecdcec5852a9e235624b2da93d5c73bdbd2504d7947
|
data/.gitignore
ADDED
data/.hound.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
# Keep it high to avoid spam.
|
3
|
+
Metrics/LineLength:
|
4
|
+
Max: 140
|
5
|
+
|
6
|
+
# This should truly be on for well documented gems.
|
7
|
+
Style/Documentation:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
# Neatly aligned code is too swell.
|
11
|
+
Style/SingleSpaceBeforeFirstArg:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
# Don't mess with RSpec DSL.
|
15
|
+
Style/BlockDelimiters:
|
16
|
+
Exclude:
|
17
|
+
- 'spec/**/*'
|
18
|
+
|
19
|
+
# Avoid contradictory style rules by enforce single quotes.
|
20
|
+
Style/StringLiterals:
|
21
|
+
EnforcedStyle: single_quotes
|
22
|
+
|
23
|
+
# It say we should use fail over raise..yeah right
|
24
|
+
Style/SignalException:
|
25
|
+
Enabled: false
|
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
## Filing an issue
|
2
|
+
|
3
|
+
When filing an issue on the Solidus project, please provide these details:
|
4
|
+
|
5
|
+
* A comprehensive list of steps to reproduce the issue.
|
6
|
+
* What you're *expecting* to happen compared with what's *actually* happening.
|
7
|
+
* Your application's complete `Gemfile.lock`, and `Gemfile.lock` as text in a [Gist](https://gist.github.com) (*not as an image*)
|
8
|
+
* Any relevant stack traces ("Full trace" preferred)
|
9
|
+
|
10
|
+
In 99% of cases, this information is enough to determine the cause and solution
|
11
|
+
to the problem that is being described.
|
12
|
+
|
13
|
+
Please remember to format code using triple backticks (\`) so that it is neatly
|
14
|
+
formatted when the issue is posted.
|
15
|
+
|
16
|
+
Any issue that is open for 14 days without actionable information or activity
|
17
|
+
will be marked as "stalled" and then closed. Stalled issues can be re-opened if
|
18
|
+
the information requested is provided.
|
19
|
+
|
20
|
+
## Pull requests
|
21
|
+
|
22
|
+
We gladly accept pull requests to add documentation, fix bugs and, in some circumstances,
|
23
|
+
add new features to Solidus.
|
24
|
+
|
25
|
+
Here's a quick guide:
|
26
|
+
|
27
|
+
1. Fork the repo.
|
28
|
+
|
29
|
+
2. Run the tests. We only take pull requests with passing tests, and it's great
|
30
|
+
to know that you have a clean slate:
|
31
|
+
|
32
|
+
$ bash build.sh
|
33
|
+
|
34
|
+
3. Create new branch then make changes and add tests for your changes. Only
|
35
|
+
refactoring and documentation changes require no new tests. If you are adding
|
36
|
+
functionality or fixing a bug, we need tests!
|
37
|
+
|
38
|
+
4. Push to your fork and submit a pull request. If the changes will apply cleanly
|
39
|
+
to the latest stable branches and master branch, you will only need to submit one
|
40
|
+
pull request.
|
41
|
+
|
42
|
+
5. If a PR does not apply cleanly to one of its targeted branches, then a separate
|
43
|
+
PR should be created that does. For instance, if a PR applied to master & 2-1-stable but not 2-0-stable, then there should be one PR for master & 2-1-stable and another, separate PR for 2-0-stable.
|
44
|
+
|
45
|
+
At this point you're waiting on us. We like to at least comment on, if not
|
46
|
+
accept, pull requests within three business days (and, typically, one business
|
47
|
+
day). We may suggest some changes or improvements or alternatives.
|
48
|
+
|
49
|
+
Some things that will increase the chance that your pull request is accepted,
|
50
|
+
taken straight from the Ruby on Rails guide:
|
51
|
+
|
52
|
+
* Use Rails idioms and helpers
|
53
|
+
* Include tests that fail without your code, and pass with it
|
54
|
+
* Update the documentation, the surrounding one, examples elsewhere, guides,
|
55
|
+
whatever is affected by your contribution
|
56
|
+
|
57
|
+
Syntax:
|
58
|
+
|
59
|
+
* Two spaces, no tabs.
|
60
|
+
* No trailing whitespace. Blank lines should not have any space.
|
61
|
+
* Prefer &&/|| over and/or.
|
62
|
+
* `MyClass.my_method(my_arg)` not `my_method( my_arg )` or `my_method my_arg`.
|
63
|
+
* `a = b` and not `a=b`.
|
64
|
+
* `a_method { |block| ... }` and not `a_method { | block | ... }`
|
65
|
+
* Follow the conventions you see used in the source already.
|
66
|
+
* -> symbol over lambda
|
67
|
+
* Ruby 1.9 hash syntax `{ key: value }` over Ruby 1.8 hash syntax `{ :key => value }`
|
68
|
+
* Alphabetize the class methods to keep them organized
|
69
|
+
|
70
|
+
And in case we didn't emphasize it enough: we love tests!
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
group :red_green_refactor, halt_on_fail: true do
|
2
|
+
guard 'rspec', cmd: 'bundle exec rspec' do
|
3
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
4
|
+
watch('config/routes.rb') { 'spec/controllers' }
|
5
|
+
watch(%r{^spec/(.+)_spec\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
6
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
7
|
+
watch(%r{^app/(.*)(\.erb)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
8
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
9
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb" }
|
10
|
+
end
|
11
|
+
end
|
data/LICENSE.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Copyright (c) 2011-2015 Spree Commerce Inc., and other contributors.
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
5
|
+
are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice,
|
8
|
+
this list of conditions and the following disclaimer.
|
9
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
11
|
+
and/or other materials provided with the distribution.
|
12
|
+
* Neither the name Spree nor the names of its contributors may be used to
|
13
|
+
endorse or promote products derived from this software without specific
|
14
|
+
prior written permission.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
20
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
21
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
22
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
23
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
24
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
25
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Solidus Internationalization
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/solidusio-contrib/solidus_i18n.svg?branch=master)](https://travis-ci.org/solidusio-contrib/solidus_i18n)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/solidusio-contrib/solidus_i18n/badges/gpa.svg)](https://codeclimate.com/github/solidusio-contrib/solidus_i18n)
|
5
|
+
|
6
|
+
This is the Internationalization project for [Solidus](https://solidus.io)
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add the following to your `Gemfile`:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'solidus_i18n', github: 'solidusio-contrib/solidus_i18n', branch: 'master'
|
16
|
+
```
|
17
|
+
|
18
|
+
Run `bundle install`
|
19
|
+
|
20
|
+
You can use the generator to install migrations and append solidus_i18n assets to
|
21
|
+
your app solidus manifest file.
|
22
|
+
|
23
|
+
bin/rails g solidus_i18n:install
|
24
|
+
|
25
|
+
This will insert these lines into your Spree assets manifests:
|
26
|
+
|
27
|
+
In `vendor/assets/javascripts/spree/frontend/all.js`
|
28
|
+
|
29
|
+
```
|
30
|
+
//= require spree/frontend/solidus_i18n
|
31
|
+
```
|
32
|
+
|
33
|
+
In `vendor/assets/javascripts/spree/backend/all.js`
|
34
|
+
|
35
|
+
```
|
36
|
+
//= require spree/backend/solidus_i18n
|
37
|
+
```
|
38
|
+
|
39
|
+
---
|
40
|
+
|
41
|
+
## Model Translations
|
42
|
+
|
43
|
+
We **removed** support for translating models into [a separate Gem](https://github.com/solidusio-contrib/solidus_globalize).
|
44
|
+
|
45
|
+
Please update your `Gemfile` if you still need the model translations.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
# Gemfile
|
49
|
+
gem 'solidus_globalize', github: 'solidusio-contrib/solidus_globalize', branch: 'master'
|
50
|
+
```
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
## Upgrading
|
55
|
+
|
56
|
+
**WARNING**: If you want to keep your model translations, be sure to add the `solidus_globalize` gem to your `Gemfile` **before** migrating the database. Otherwise **you will loose your translations**!
|
57
|
+
|
58
|
+
### 1. Migrate your database
|
59
|
+
|
60
|
+
bin/rake solidus:i18n:upgrade
|
61
|
+
bin/rake db:migrate
|
62
|
+
|
63
|
+
*Note:* The migration automatically skips the removal of the translations tables. So it's safe to run the migration without data loss. But be sure to have the `solidus_globalize` gem in your `Gemfile`, if you want to keep them.
|
64
|
+
|
65
|
+
### 2. Remove Configuration
|
66
|
+
|
67
|
+
Remove all occurrences of `SolidusI18n::Config.supported_locales` from your code.
|
68
|
+
|
69
|
+
|
70
|
+
Contributing
|
71
|
+
------------
|
72
|
+
|
73
|
+
Solidus is an open source project and we encourage contributions. Please read
|
74
|
+
[CONTRIBUTING.md](CONTRIBUTING.md) before contributing.
|
data/Rakefile
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/packagetask'
|
5
|
+
require 'rubygems/package_task'
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
require 'spree/testing_support/common_rake'
|
8
|
+
require 'solidus_i18n'
|
9
|
+
|
10
|
+
Bundler::GemHelper.install_tasks
|
11
|
+
RSpec::Core::RakeTask.new
|
12
|
+
|
13
|
+
task default: :spec
|
14
|
+
|
15
|
+
spec = eval(File.read('solidus_i18n.gemspec'))
|
16
|
+
|
17
|
+
Gem::PackageTask.new(spec) do |p|
|
18
|
+
p.gem_spec = spec
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'Generates a dummy app for testing'
|
22
|
+
task :test_app do
|
23
|
+
ENV['LIB_NAME'] = 'solidus_i18n'
|
24
|
+
Rake::Task['common:test_app'].invoke
|
25
|
+
end
|
26
|
+
|
27
|
+
namespace :solidus_i18n do
|
28
|
+
desc 'Update by retrieving the latest Solidus locale files'
|
29
|
+
task :update_default do
|
30
|
+
puts "Fetching latest Solidus locale file to #{locales_dir}"
|
31
|
+
require 'uri'
|
32
|
+
require 'net/https'
|
33
|
+
|
34
|
+
location = 'https://raw.github.com/solidusio/solidus/master/core/config/locales/en.yml'
|
35
|
+
begin
|
36
|
+
uri = URI.parse(location)
|
37
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
38
|
+
http.use_ssl = true
|
39
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
40
|
+
puts "Getting from #{uri}"
|
41
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
42
|
+
case response = http.request(request)
|
43
|
+
when Net::HTTPRedirection then location = response['location']
|
44
|
+
when Net::HTTPClientError, Net::HTTPServerError then response.error!
|
45
|
+
end
|
46
|
+
end until Net::HTTPSuccess == response
|
47
|
+
|
48
|
+
FileUtils.mkdir_p(default_dir) unless File.directory?(default_dir)
|
49
|
+
|
50
|
+
File.open("#{default_dir}/solidus_core.yml", 'w') { |file| file << response.body }
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'Syncronize translation files with latest en (adds comments with fallback en value)'
|
54
|
+
task :sync do
|
55
|
+
puts 'Starting syncronization...'
|
56
|
+
words = translation_keys
|
57
|
+
|
58
|
+
Dir["#{locales_dir}/*.yml"].each do |filename|
|
59
|
+
basename = File.basename(filename, '.yml')
|
60
|
+
(comments, other) = SolidusI18n::Utils.read_file(filename, basename)
|
61
|
+
# Initializing hash variable as en fallback if it does not exist
|
62
|
+
words.each { |k, _v| other[k] ||= "#{words[k]}" }
|
63
|
+
# Remove if not defined in en locale
|
64
|
+
other.delete_if { |k, _v| !words[k] }
|
65
|
+
SolidusI18n::Utils.write_file(filename, basename, comments, other, false)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def translation_keys
|
70
|
+
(dummy_comments, words) = SolidusI18n::Utils.read_file(File.dirname(__FILE__) + '/default/solidus_core.yml', 'en')
|
71
|
+
words
|
72
|
+
end
|
73
|
+
|
74
|
+
def locales_dir
|
75
|
+
File.join File.dirname(__FILE__), 'config/locales'
|
76
|
+
end
|
77
|
+
|
78
|
+
def default_dir
|
79
|
+
File.join File.dirname(__FILE__), 'default'
|
80
|
+
end
|
81
|
+
|
82
|
+
def env_locale
|
83
|
+
ENV['LOCALE'].presence
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*
|
6
|
+
*= require spree/backend
|
7
|
+
*= require_tree .
|
8
|
+
*/
|
@@ -0,0 +1,8 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*
|
6
|
+
*= require spree/frontend
|
7
|
+
*= require_tree .
|
8
|
+
*/
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Spree::Admin::GeneralSettingsController.class_eval do
|
2
|
+
before_filter :update_i18n_settings, only: :update
|
3
|
+
|
4
|
+
private
|
5
|
+
|
6
|
+
def update_i18n_settings
|
7
|
+
params.each do |name, value|
|
8
|
+
next unless SolidusI18n::Config.has_preference? name
|
9
|
+
SolidusI18n::Config[name] = value.map(&:to_sym)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module SolidusI18n
|
2
|
+
module LocaleHelper
|
3
|
+
|
4
|
+
def select_available_locales
|
5
|
+
select_tag('available_locales[]', options_for_select(
|
6
|
+
all_locales_options,
|
7
|
+
Config.available_locales
|
8
|
+
), common_options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def available_locales_options
|
12
|
+
Config.available_locales.map { |locale| locale_presentation(locale) }
|
13
|
+
end
|
14
|
+
|
15
|
+
# Need to manually add en to the array because the en.yml was moved from
|
16
|
+
# this project. solidusio/solidus now has those keys.
|
17
|
+
def all_locales_options
|
18
|
+
Locale.all.map { |locale| locale_presentation(locale) }.push(['English (EN)', :en])
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def locale_presentation(locale)
|
24
|
+
[Spree.t(:'i18n.this_file_language', locale: locale), locale]
|
25
|
+
end
|
26
|
+
|
27
|
+
def common_options
|
28
|
+
{ class: 'fullwidth', multiple: 'true' }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!-- insert_after '[data-hook=admin_general_setting_mail_from_address]'-->
|
2
|
+
<div class="panel panel-default panel-localization">
|
3
|
+
<div class="panel-heading">
|
4
|
+
<h1 class="panel-title">
|
5
|
+
<%= Spree.t(:'i18n.localization_settings') %>
|
6
|
+
</h1>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="panel-body" data-hook="localization_settings_body">
|
10
|
+
<div class="form-group">
|
11
|
+
<label for="available_locales_">
|
12
|
+
<%= Spree.t(:'i18n.available_locales') %>
|
13
|
+
</label>
|
14
|
+
<%= select_available_locales %>
|
15
|
+
<p class="help-block">
|
16
|
+
<%= Spree.t(:'i18n.locales_displayed_on_frontend_select_box') %>
|
17
|
+
</p>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<!-- replace_contents '#main-nav-bar' -->
|
2
|
+
<li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
|
3
|
+
<li id="link-to-cart" data-hook>
|
4
|
+
<noscript>
|
5
|
+
<%= link_to Spree.t(:cart), '/cart' %>
|
6
|
+
</noscript>
|
7
|
+
|
8
|
+
</li>
|
9
|
+
<script>Spree.fetch_cart('<%= j cart_link_url %>')</script>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!-- insert_bottom '#main-nav-bar' -->
|
2
|
+
<% if SolidusI18n::Config.available_locales.many? %>
|
3
|
+
<li id="locale-select" data-hook>
|
4
|
+
<%= form_tag spree.set_locale_path, class: 'navbar-form' do %>
|
5
|
+
<div class="form-group">
|
6
|
+
<label for="switch_to_locale" class="sr-only">
|
7
|
+
<%= Spree.t(:'i18n.language') %>
|
8
|
+
</label>
|
9
|
+
<%= select_tag(:switch_to_locale,
|
10
|
+
options_for_select(available_locales_options, I18n.locale),
|
11
|
+
class: 'form-control') %>
|
12
|
+
<noscript><%= submit_tag %></noscript>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
</li>
|
16
|
+
<% end %>
|
data/bin/rails
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'i18n_data'
|
2
|
+
|
3
|
+
module I18n
|
4
|
+
module Backend
|
5
|
+
class I18nDataBackend
|
6
|
+
module Implementation
|
7
|
+
include Base, Flatten
|
8
|
+
|
9
|
+
def available_locales
|
10
|
+
I18nData.languages.keys.map(&:to_sym)
|
11
|
+
end
|
12
|
+
|
13
|
+
def lookup(locale, key, scope = [], options = {})
|
14
|
+
I18nData.countries(locale)[key]
|
15
|
+
rescue I18nData::NoTranslationAvailable
|
16
|
+
# rescue failed lookup to fall back to this extensions locale files.
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
include Implementation
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::I18nDataBackend.new, I18n.backend)
|
26
|
+
|
27
|
+
module I18nData
|
28
|
+
private
|
29
|
+
|
30
|
+
def self.normal_to_region_code(normal)
|
31
|
+
country_mappings = {
|
32
|
+
'DE-CH' => 'de',
|
33
|
+
'FR-CH' => 'fr',
|
34
|
+
'EN-AU' => 'en',
|
35
|
+
'EN-GB' => 'en',
|
36
|
+
'EN-US' => 'en',
|
37
|
+
'EN-IN' => 'en',
|
38
|
+
'EN-NZ' => 'en',
|
39
|
+
'ES-CL' => 'es',
|
40
|
+
'ES-EC' => 'es',
|
41
|
+
'ES-MX' => 'es',
|
42
|
+
'PT-BR' => 'pt',
|
43
|
+
'SL-SI' => 'sl',
|
44
|
+
'ZH-TW' => 'zh_TW',
|
45
|
+
'ZH-CN' => 'zh_CN',
|
46
|
+
'ZH' => 'zh_CN',
|
47
|
+
'BN' => 'bn_IN'
|
48
|
+
}
|
49
|
+
country_mappings[normal] || normal
|
50
|
+
end
|
51
|
+
end
|