Skip to content

Commit 4266216

Browse files
committed
Gibberish: Support multiple paths for loading language files [Sean Cribbs] [#71 state:resolved]
1 parent 303fed6 commit 4266216

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

‎lib/gibberish/localize.rb‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,16 @@ def translate(string, key, *args)
5252
def load_languages!
5353
language_files.each do |file|
5454
key = File.basename(file, '.*').to_sym
55-
@@languages[key] = YAML.load_file(file).symbolize_keys
55+
@@languages[key] ||= {}
56+
@@languages[key].merge! YAML.load_file(file).symbolize_keys
5657
end
5758
languages
5859
end
5960

61+
@@language_paths = [RAILS_ROOT]
62+
def language_paths
63+
@@language_paths ||= []
64+
end
6065
private
6166
def interpolate_string(string, *args)
6267
if args.last.is_a? Hash
@@ -75,9 +80,9 @@ def interpolate_with_hash(string, hash)
7580
def interpolate_with_strings(string, strings)
7681
string.gsub(/\{\w+\}/) { strings.shift }
7782
end
78-
83+
7984
def language_files
80-
Dir[File.join(RAILS_ROOT, 'lang', '*.{yml,yaml}')]
85+
@@language_paths.map {|path| Dir[File.join(path, 'lang', '*.{yml,yaml}')]}.flatten
8186
end
8287
end
8388
end

‎test/gibberish_test.rb‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
end
88

99
$:.unshift File.dirname(__FILE__) + '/../lib'
10+
RAILS_ROOT = File.dirname(__FILE__) + '/..'
11+
1012
require 'active_support'
1113
require 'gibberish'
1214

13-
RAILS_ROOT = File.dirname(__FILE__) + '/..'
1415
Gibberish.load_languages!
1516

1617
context "After loading languages, Gibberish" do
@@ -89,6 +90,18 @@
8990
Gibberish.add_reserved_key key
9091
Gibberish.reserved_keys.size.should.equal 2
9192
end
93+
94+
specify "should have loaded language files from directories other than the default" do
95+
Gibberish.language_paths << File.dirname(__FILE__)
96+
Gibberish.load_languages!
97+
string = "I don't speak Babble."
98+
Gibberish.use_language :es do
99+
string[:no_babble].should.equal "No hablo Bable."
100+
end
101+
Gibberish.use_language :fr do
102+
string[:no_babble].should.equal "Je ne parle pas Babble."
103+
end
104+
end
92105
end
93106

94107
context "When no language is set" do

‎test/lang/es.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
no_babble: No hablo Bable.

‎test/lang/fr.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
no_babble: Je ne parle pas Babble.

0 commit comments

Comments
 (0)