morhekil-globalite 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +202 -0
- data/lang/rails/de-DE.yml +359 -0
- data/lang/rails/en-UK.yml +359 -0
- data/lang/rails/en-US.yml +359 -0
- data/lang/rails/es-AR.yml +359 -0
- data/lang/rails/es-ES.yml +361 -0
- data/lang/rails/fi-FI.yml +359 -0
- data/lang/rails/fr-FR.yml +361 -0
- data/lang/rails/hu-HU.yml +357 -0
- data/lang/rails/it.yml +360 -0
- data/lang/rails/nl-NL.yml +349 -0
- data/lang/rails/pl-PL.yml +360 -0
- data/lang/rails/pt-BR.yml +326 -0
- data/lang/rails/pt-PT.yml +326 -0
- data/lang/rails/ru-RU.yml +360 -0
- data/lang/rails/sr-CP.yml +357 -0
- data/lang/rails/sr-SR.yml +357 -0
- data/lang/rails/tr.yml +192 -0
- data/lang/rails/zh-CN.yml +364 -0
- data/lang/rails/zh-HK.yml +364 -0
- data/lang/rails/zh-TW.yml +364 -0
- data/lib/globalite.rb +30 -0
- data/lib/globalite/l10n.rb +333 -0
- data/lib/globalite/locale.rb +56 -0
- data/lib/rails/core_ext.rb +19 -0
- data/lib/rails/localization.rb +58 -0
- data/lib/rails/localized_action_controller.rb +18 -0
- data/lib/rails/localized_action_view.rb +211 -0
- data/lib/rails/localized_active_record.rb +80 -0
- data/spec/core_localization_spec.rb +116 -0
- data/spec/helpers/spec_helper.rb +16 -0
- data/spec/l10n_spec.rb +267 -0
- data/spec/lang/rails/zz.yml +13 -0
- data/spec/lang/ui/en-UK.yml +3 -0
- data/spec/lang/ui/en-US.yml +3 -0
- data/spec/lang/ui/es.yml +3 -0
- data/spec/lang/ui/fr-FR.yml +9 -0
- metadata +88 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
# This examples can only be run if the plugin is installed in a Rails app
|
2
|
+
# Requires RSpec plugin or gem
|
3
|
+
|
4
|
+
require File.dirname(__FILE__) + '/helpers/spec_helper'
|
5
|
+
include ActionView::Helpers::DateHelper
|
6
|
+
include ActionView::Helpers::NumberHelper
|
7
|
+
include ActionView::Helpers::FormOptionsHelper
|
8
|
+
|
9
|
+
describe "when Rails is loaded" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
Globalite.current_locale = 'en-US'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have loaded fr" do
|
16
|
+
Globalite.locales.should include(:"fr-FR")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have loaded the rails localization file in English and French" do
|
20
|
+
:error_message_inclusion.l.should == "is not included in the list"
|
21
|
+
Globalite.locale = :"fr-FR"
|
22
|
+
Globalite.locales.should include(:"fr-FR")
|
23
|
+
Globalite.locale.should == :"fr-FR"
|
24
|
+
Globalite.localizations.keys.should include(:error_message_inclusion)
|
25
|
+
Globalite.localizations[:error_message_inclusion].should_not be(nil)
|
26
|
+
:error_message_inclusion.l.should == "n'est pas inclus dans la liste."
|
27
|
+
end
|
28
|
+
|
29
|
+
it "ActiveRecord error messages should be localized in English" do
|
30
|
+
ActiveRecord::Errors.default_error_messages[:confirmation].should include("doesn't match confirmation")
|
31
|
+
Globalite.current_language = :fr
|
32
|
+
ActiveRecord::Errors.default_error_messages[:confirmation].should include("ne correspond pas à la confirmation")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "distance_of_time_in_words should be localized properly" do
|
36
|
+
from = Time.mktime(2004, 3, 6, 21, 41, 18).utc
|
37
|
+
distance_of_time_in_words(from, Time.mktime(2004, 3, 6, 21, 41, 25).utc).should == "less than a minute"
|
38
|
+
distance_of_time_in_words(Time.mktime(2004, 3, 7, 1, 20).utc, from).should == "about 4 hours"
|
39
|
+
Globalite.language = :fr
|
40
|
+
distance_of_time_in_words(from, Time.mktime(2004, 3, 6, 21, 41, 25).utc).should == "moins d'une minute"
|
41
|
+
distance_of_time_in_words(Time.mktime(2004, 3, 7, 1, 20).utc, from).should == "environ 4 heures"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "currency should be localized" do
|
45
|
+
number_to_currency(123).should == "$123.00"
|
46
|
+
Globalite.current_language = :fr
|
47
|
+
number_to_currency(123).should == "123,00 €"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should support different locales" do
|
51
|
+
Globalite.current_locale = :"en-US"
|
52
|
+
number_to_currency(123).should == "$123.00"
|
53
|
+
Globalite.current_locale = :"en-UK"
|
54
|
+
number_to_currency(123).should == "£123.00"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "date_select should be localized" do
|
58
|
+
select_day(Time.parse("Sat Aug 16 07:00:00 UTC 2003")).should == %Q(<select id=\"date_day\" name=\"date[day]\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option selected=\"selected\" value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n)
|
59
|
+
select_day(Time.parse("Sat Aug 16 07:00:00 UTC 2003"), :include_blank => true).should == %Q(<select id="date_day" name="date[day]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option selected="selected" value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n)
|
60
|
+
select_day(16, :include_blank => true).should == %Q(<select id="date_day" name="date[day]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option selected="selected" value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n)
|
61
|
+
Globalite.current_language = :fr
|
62
|
+
select_day(Time.parse("Sat Aug 16 07:00:00 UTC 2003")).should == %Q(<select id=\"date_day\" name=\"date[day]\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option selected=\"selected\" value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n)
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
it "datetime_select should be localized" do
|
67
|
+
select_datetime(nil, :prefix => "date[first]").should include('January')
|
68
|
+
Globalite.language = :fr
|
69
|
+
select_datetime(nil, :prefix => "date[first]").should include('Janvier')
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#select_month' do
|
73
|
+
it "should localize the month's names and their abbreviations" do
|
74
|
+
select_month(Time.mktime(2003, 8, 16)).should == %Q(<select id=\"date_month\" name=\"date[month]\">\n<option value=\"1\">January</option>\n<option value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\" selected=\"selected\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n)
|
75
|
+
Globalite.language = :fr
|
76
|
+
select_month(Time.mktime(2003, 8, 16)).should == %Q(<select id=\"date_month\" name=\"date[month]\">\n<option value=\"1\">Janvier</option>\n<option value=\"2\">Février</option>\n<option value=\"3\">Mars</option>\n<option value=\"4\">Avril</option>\n<option value=\"5\">Mai</option>\n<option value=\"6\">Juin</option>\n<option value=\"7\">Juillet</option>\n<option value=\"8\" selected=\"selected\">Août</option>\n<option value=\"9\">Septembre</option>\n<option value=\"10\">Octobre</option>\n<option value=\"11\">Novembre</option>\n<option value=\"12\">Décembre</option>\n</select>\n)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should support the :use_hidden option" do
|
80
|
+
select_month(Time.mktime(2003, 8, 16), :use_hidden => true).should == %Q(<input id=\"date_month\" name=\"date[month]\" type=\"hidden\" value=\"8\" />\n)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "the country list should be localized" do
|
85
|
+
expected_en = %Q(<option value=\"Afghanistan\">Afghanistan</option>\n<option value=\"Albania\">Albania</option>\n<option value=\"Algeria\">Algeria</option>\n<option value=\"American Samoa\">American Samoa</option>\n<option value=\"Andorra\">Andorra</option>\n<option value=\"Angola\">Angola</option>\n<option value=\"Anguilla\">Anguilla</option>\n<option value=\"Antarctica\">Antarctica</option>\n<option value=\"Antigua And Barbuda\">Antigua And Barbuda</option>\n<option value=\"Argentina\">Argentina</option>\n<option value=\"Armenia\">Armenia</option>\n<option value=\"Aruba\">Aruba</option>\n<option value=\"Australia\">Australia</option>\n<option value=\"Austria\">Austria</option>\n<option value=\"Azerbaijan\")
|
86
|
+
country_options_for_select.should include(expected_en)
|
87
|
+
Globalite.current_language = :fr
|
88
|
+
expected_fr = %Q(<option value=\"Afghanistan\">Afghanistan</option>\n<option value=\"Albanie\">Albanie</option>\n<option value=\"Algérie\">Algérie</option>\n)
|
89
|
+
country_options_for_select.should include(expected_fr)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'time should be localized' do
|
93
|
+
t = Time.parse('2006-12-25 13:55 UTC')
|
94
|
+
t.to_formatted_s(:long).should == 'December 25, 2006 13:55'
|
95
|
+
Globalite.language = :fr
|
96
|
+
t.l(:long).should == '25 Décembre, 2006 13:55'
|
97
|
+
t.l(:short).should == '25 Déc, 13:55'
|
98
|
+
# custom format
|
99
|
+
t.l('%a, %A, %d %b %B %Y %H:%M:%S %p').should == "Lun, Lundi, 25 Déc Décembre 2006 13:55:00 pm"
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'date should be localized' do
|
103
|
+
d = Date.new(2007,05,13)
|
104
|
+
d.l.should == '2007-05-13'
|
105
|
+
Globalite.current_language = :fr
|
106
|
+
d.l(:short).should == '13 Mai'
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'an array to sentence should be localized' do
|
110
|
+
us = ['Heidi', 'Matt']
|
111
|
+
us.to_sentence.should == 'Heidi and Matt'
|
112
|
+
Globalite.current_language = :fr
|
113
|
+
us.to_sentence.should == 'Heidi et Matt'
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
begin
|
2
|
+
require 'rubygems'
|
3
|
+
require 'spec'
|
4
|
+
rescue LoadError
|
5
|
+
puts "==> The test/spec library (gem) is required to run the Globalite tests."
|
6
|
+
exit
|
7
|
+
end
|
8
|
+
|
9
|
+
$:.unshift File.dirname(__FILE__) + '/../../lib'
|
10
|
+
ENV["RAILS_ENV"] = "test"
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../../../config/environment")
|
12
|
+
require 'globalite'
|
13
|
+
|
14
|
+
# add and Load the spec localization files
|
15
|
+
Globalite.add_localization_source(File.dirname(__FILE__) + '/../lang/ui')
|
16
|
+
Globalite.load_localization!
|
data/spec/l10n_spec.rb
ADDED
@@ -0,0 +1,267 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helpers/spec_helper'
|
2
|
+
|
3
|
+
describe "After loading languages, Globalite" do
|
4
|
+
before(:all) do
|
5
|
+
Globalite.add_localization_source(File.dirname(__FILE__) + '/../spec/lang/ui/')
|
6
|
+
Globalite.load_localization!
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should have loaded en-US spec localization' do
|
10
|
+
Globalite.locales.should include(:"en-US")
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should have some default translations' do
|
14
|
+
:error_message_exclusion.l.should_not be(nil)
|
15
|
+
Globalite.localize(:welcome_friend).should_not be(nil)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should have loaded the Rails localizations' do
|
19
|
+
[:"es-*", :"fr-FR", :"pt-PT", :"en-US", :"it-*", :"es-ES", :"pt-BR", :"en-UK"].each { |locale| Globalite.locales.should include(locale) }
|
20
|
+
[:UK, :US, :ES, :FR, :BR, :PT].each { |country| Globalite.countries.should include(country) }
|
21
|
+
[:en, :es, :fr, :it, :pt].each { |language| Globalite.languages.should include(language) }
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should have both the UI and the RAILS translations even if a country isn t selected' do
|
25
|
+
Globalite.language = :fr
|
26
|
+
:welcome_friend.l.should_not == "__localization_missing__"
|
27
|
+
:date_helper_one_month.l.should_not == "__localization_missing__"
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should have a list of unique languages' do
|
31
|
+
Globalite.languages.should be_an_instance_of(Array)
|
32
|
+
Globalite.languages.should == Globalite.languages.uniq
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should have a list of unique countries' do
|
36
|
+
Globalite.countries.should be_an_instance_of(Array)
|
37
|
+
Globalite.countries.should == Globalite.countries.uniq
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should have a list of unique locales' do
|
41
|
+
Globalite.locales.should be_an_instance_of(Array)
|
42
|
+
Globalite.locales.should == Globalite.locales.uniq
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have at least some English localization" do
|
46
|
+
Globalite.languages.should include(:en)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should work using the alias methods' do
|
50
|
+
Globalite.country = :UK
|
51
|
+
Globalite.country.should == (:UK)
|
52
|
+
Globalite.current_country = :FR
|
53
|
+
Globalite.current_country.should == (:FR)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should be able to switch between existing languages" do
|
57
|
+
Globalite.language = :fr
|
58
|
+
Globalite.locale.should == (:'fr-FR')
|
59
|
+
string = "Welcome, dude!"
|
60
|
+
Globalite.localize(:welcome_friend).should_not == string
|
61
|
+
Globalite.localize(:welcome_friend).should == "Bienvenue l'ami!"
|
62
|
+
Globalite.localize(:welcome_friend).should_not == "__localization_missing__"
|
63
|
+
|
64
|
+
Globalite.language = :es
|
65
|
+
Globalite.localize(:welcome_friend).should_not == string
|
66
|
+
Globalite.localize(:welcome_friend).should_not == "__localization_missing__"
|
67
|
+
|
68
|
+
Globalite.current_language = nil
|
69
|
+
Globalite.localize(:welcome_friend).should_not == string
|
70
|
+
Globalite.localize(:welcome_friend).should_not == "__localization_missing__"
|
71
|
+
|
72
|
+
Globalite.current_language = :en
|
73
|
+
Globalite.current_country = :US
|
74
|
+
Globalite.locales.should include(:"en-US")
|
75
|
+
Locale.code.should == :"en-US"
|
76
|
+
Globalite.localize(:welcome_friend).should == string
|
77
|
+
Globalite.localize(:welcome_friend).should_not == "__localization_missing__"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should be able to switch languages using strings" do
|
81
|
+
Globalite.current_language = 'es'
|
82
|
+
Globalite.current_language.should == :es
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should be able to switch to the default language at any time" do
|
86
|
+
Globalite.current_language = :fr
|
87
|
+
Globalite.current_language.should_not ==(Globalite.default_language)
|
88
|
+
|
89
|
+
Globalite.current_language = :en
|
90
|
+
Globalite.current_language.should ==(Globalite.default_language)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should be able to set the current locale" do
|
94
|
+
Globalite.current_locale = 'en-US'
|
95
|
+
Globalite.locale.should == 'en-US'.to_sym
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should not be able to change the current country if there's no locale for it" do
|
99
|
+
Globalite.language = :fr
|
100
|
+
Globalite.locale.should == "fr-*".to_sym
|
101
|
+
Globalite.countries.include?(:XY).should be(false)
|
102
|
+
|
103
|
+
Globalite.country = :XY
|
104
|
+
Globalite.current_locale.should == "fr-*".to_sym
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should let you assign a valid locale" do
|
108
|
+
Globalite.current_locale = :"fr-*"
|
109
|
+
Globalite.current_locale.should == :"fr-*"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should auto assign a language if you try to set a country defined in an available locale" do
|
113
|
+
Globalite.current_locale = :"fr-*"
|
114
|
+
Globalite.current_country = :US
|
115
|
+
Globalite.current_locale.should == "en-US".to_sym
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should auto assign a wild card if a country isn't assigned" do
|
119
|
+
Globalite.current_language = :fr
|
120
|
+
Globalite.current_locale.should == "fr-*".to_sym
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should find translations for a locale without country even though there's no generic translation for the language" do
|
124
|
+
Globalite.current_locale = :"fr-*"
|
125
|
+
Globalite.current_language = :en
|
126
|
+
Globalite.current_language.should == :en
|
127
|
+
Globalite.localizations.should_not be_empty
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should return an array of the languages it loaded" do
|
131
|
+
Globalite.load_localization!
|
132
|
+
languages = Globalite.languages
|
133
|
+
languages.should be_an_instance_of(Array)
|
134
|
+
languages.should include(:en)
|
135
|
+
languages.should include(:fr)
|
136
|
+
Globalite.locales.should include(:"en-US")
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should return an array of locales it loaded" do
|
140
|
+
locales = Globalite.locales
|
141
|
+
locales.should be_an_instance_of(Array)
|
142
|
+
locales.should include(:"en-US")
|
143
|
+
locales.should include(:"fr-FR")
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should be able to accept new, unique reserved keys" do
|
147
|
+
key = :something_evil
|
148
|
+
Globalite.add_reserved_key key
|
149
|
+
Globalite.reserved_keys.should include(key)
|
150
|
+
Globalite.reserved_keys.size.should == 2
|
151
|
+
Globalite.add_reserved_key key
|
152
|
+
Globalite.add_reserved_key key
|
153
|
+
Globalite.reserved_keys.size.should == 2
|
154
|
+
end
|
155
|
+
|
156
|
+
it "shouldn't be able to set a unsupported locale" do
|
157
|
+
Locale.set_code :"te-st"
|
158
|
+
Locale.code.should == :"en-*"
|
159
|
+
Locale.set_code 'test'
|
160
|
+
Locale.code.should == :"en-*"
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should return an array of inflectors it loaded" do
|
164
|
+
inflectors = Globalite.inflectors
|
165
|
+
inflectors.should be_an_instance_of(Hash)
|
166
|
+
inflectors.should include(:'ru')
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "When a non-existent language is set" do
|
171
|
+
before(:each) do
|
172
|
+
Globalite.current_language = :klingon
|
173
|
+
end
|
174
|
+
|
175
|
+
it "the previous language should be used" do
|
176
|
+
Globalite.current_language.should == Globalite.default_language
|
177
|
+
Globalite.current_language = :fr
|
178
|
+
# testing alias
|
179
|
+
Globalite.language.should == :fr
|
180
|
+
Globalite.current_language = :klingon
|
181
|
+
Globalite.current_language.should == :fr
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
185
|
+
|
186
|
+
describe "a localization key (in general)" do
|
187
|
+
|
188
|
+
before(:each) do
|
189
|
+
Globalite.current_locale = "en-US".to_sym
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should return the proper localization it the key is localized" do
|
193
|
+
:welcome_friend.localize.should == "Welcome, dude!"
|
194
|
+
:welcome_friend.l.should == "Welcome, dude!"
|
195
|
+
Globalite.current_language = :fr
|
196
|
+
:welcome_friend.l.should == "Bienvenue l'ami!"
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should return the available localization for the language" do
|
200
|
+
Globalite.language = :fr
|
201
|
+
Globalite.language = :en
|
202
|
+
Globalite.locale.should == :'en-*'
|
203
|
+
|
204
|
+
:welcome_friend.localize.should =~ /Welcome( mate|, dude)\!/
|
205
|
+
:error_message_exclusion.l.should == "is reserved"
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should return an optional string if the localization is missing" do
|
209
|
+
:unknown_key.l("this is my replacement string").should == "this is my replacement string"
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should return an error missing if the localization is missing and no option string was given" do
|
213
|
+
:unknown_key.l.should == "__localization_missing__"
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should return nil if a reserved key is used" do
|
217
|
+
:limit.l.should be(nil)
|
218
|
+
end
|
219
|
+
|
220
|
+
it "should be able to localized a key with one or many passed arguments" do
|
221
|
+
Globalite.current_language = :fr
|
222
|
+
:welcome_user.l_with_args({:user => :user.l}).should == "Cher utilisateur, Bienvenue!"
|
223
|
+
:many_args_test.l_with_args({:name => 'Matt', :what => 'déchire', :other => 'Serieusement'}).should == 'Serieusement, Matt vraiment déchire comme une bete ;)'
|
224
|
+
end
|
225
|
+
|
226
|
+
it "should handle localizated pluralization properly" do
|
227
|
+
Globalite.current_language = :fr
|
228
|
+
:simple_pluralization.l.should == "2 erreurs"
|
229
|
+
end
|
230
|
+
|
231
|
+
it "should handle custom pluralization properly" do
|
232
|
+
Globalite.current_language = :fr
|
233
|
+
:pluralization_test.l.should == "Heidi a vu trois 3 chevaux dans le parc"
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should handle pluralization with passed arguments" do
|
237
|
+
Globalite.current_language = :fr
|
238
|
+
:pluralization_with_passed_args.l_with_args({:count => 2}).should == "Heidi a vu trois 2 chevaux dans le parc"
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should use custom inflectors for pluralization if loaded" do
|
242
|
+
Globalite.current_language = :ru
|
243
|
+
:singular.l.should == 'vo dvore 1 korova'
|
244
|
+
:plural.l.should == 'vo dvore 22 korovy'
|
245
|
+
:second_plural.l.should == 'vo dvore 75 korov'
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should handle multiple pluralizations in the same string properly" do
|
249
|
+
Globalite.current_language = :fr
|
250
|
+
:double_pluralization.l.should == "2 erreurs et 5 erreurs"
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
describe "an alternative location with localization files" do
|
255
|
+
before(:all) do
|
256
|
+
Globalite.add_localization_source(File.dirname(__FILE__) + '/lang/rails')
|
257
|
+
end
|
258
|
+
|
259
|
+
it "could be added to the localization source path" do
|
260
|
+
Globalite.load_localization!.should include("/spec/lang/rails/zz.yml")
|
261
|
+
end
|
262
|
+
|
263
|
+
it "should have been loaded properly" do
|
264
|
+
Globalite.languages.should include(:zz)
|
265
|
+
Globalite.locales.should include(:"zz-*")
|
266
|
+
end
|
267
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# ActiveRecord::Errors.default_error_messages
|
2
|
+
error_message_inclusion: is not included in the list
|
3
|
+
error_message_exclusion: is reserved
|
4
|
+
error_message_invalid: is invalid
|
5
|
+
error_message_confirmation: doesn't match confirmation
|
6
|
+
error_message_accepted: must be accepted
|
7
|
+
error_message_empty: can't be empty
|
8
|
+
error_message_blank: can't be blank
|
9
|
+
error_message_too_long: is too long (maximum is %d characters)
|
10
|
+
error_message_too_short: is too short (minimum is %d characters)
|
11
|
+
error_message_wrong_length: is the wrong length (should be %d characters)
|
12
|
+
error_message_taken: has already been taken
|
13
|
+
error_message_not_a_number: is not a number
|
data/spec/lang/ui/es.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
welcome_friend: Bienvenue l'ami!
|
2
|
+
welcome_user: Cher {user}, Bienvenue!
|
3
|
+
love_rails: J'aime Rails.
|
4
|
+
user: utilisateur
|
5
|
+
many_args_test: "{other}, {name} vraiment {what} comme une bete ;)"
|
6
|
+
simple_pluralization: pluralize{2, erreur}
|
7
|
+
double_pluralization: pluralize{2, erreur} et pluralize{5, erreur}
|
8
|
+
pluralization_test: Heidi a vu trois pluralize{3, cheval, chevaux} dans le parc
|
9
|
+
:pluralization_with_passed_args: Heidi a vu trois pluralize{{count}, cheval, chevaux} dans le parc
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: morhekil-globalite
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Aimonetti
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-06-02 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Easy UI localization, Rails localization. (Localization of the core functions from rails), Simple yet powerful solution for user content availability in multiple languages.
|
17
|
+
email: mattaimonetti@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
files:
|
25
|
+
- lang/rails/de-DE.yml
|
26
|
+
- lang/rails/en-UK.yml
|
27
|
+
- lang/rails/en-US.yml
|
28
|
+
- lang/rails/es-AR.yml
|
29
|
+
- lang/rails/es-ES.yml
|
30
|
+
- lang/rails/fi-FI.yml
|
31
|
+
- lang/rails/fr-FR.yml
|
32
|
+
- lang/rails/hu-HU.yml
|
33
|
+
- lang/rails/it.yml
|
34
|
+
- lang/rails/nl-NL.yml
|
35
|
+
- lang/rails/pl-PL.yml
|
36
|
+
- lang/rails/pt-BR.yml
|
37
|
+
- lang/rails/pt-PT.yml
|
38
|
+
- lang/rails/ru-RU.yml
|
39
|
+
- lang/rails/zh-CN.yml
|
40
|
+
- lang/rails/sr-CP.yml
|
41
|
+
- lang/rails/sr-SR.yml
|
42
|
+
- lang/rails/tr.yml
|
43
|
+
- lang/rails/zh-HK.yml
|
44
|
+
- lang/rails/zh-TW.yml
|
45
|
+
- lib/globalite/l10n.rb
|
46
|
+
- lib/globalite/locale.rb
|
47
|
+
- lib/rails/core_ext.rb
|
48
|
+
- lib/rails/localization.rb
|
49
|
+
- lib/rails/localized_action_view.rb
|
50
|
+
- lib/rails/localized_active_record.rb
|
51
|
+
- lib/rails/localized_action_controller.rb
|
52
|
+
- lib/globalite.rb
|
53
|
+
- README
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: http://github.com/mojombo/grit
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
version:
|
73
|
+
requirements: []
|
74
|
+
|
75
|
+
rubyforge_project:
|
76
|
+
rubygems_version: 1.2.0
|
77
|
+
signing_key:
|
78
|
+
specification_version: 2
|
79
|
+
summary: Globalite is meant to be a breed of the best internationalization/localization plugins available for Rails.
|
80
|
+
test_files:
|
81
|
+
- spec/helpers/spec_helper.rb
|
82
|
+
- spec/lang/rails/zz.yml
|
83
|
+
- spec/lang/ui/es.yml
|
84
|
+
- spec/lang/ui/en-UK.yml
|
85
|
+
- spec/lang/ui/en-US.yml
|
86
|
+
- spec/lang/ui/fr-FR.yml
|
87
|
+
- spec/core_localization_spec.rb
|
88
|
+
- spec/l10n_spec.rb
|