Index: C:/rails/gibberish/test/gibberish_test.rb =================================================================== --- C:/rails/gibberish/test/gibberish_test.rb (revision 307) +++ C:/rails/gibberish/test/gibberish_test.rb (working copy) @@ -7,10 +7,11 @@ end $:.unshift File.dirname(__FILE__) + '/../lib' +RAILS_ROOT = File.dirname(__FILE__) + '/..' + require 'active_support' require 'gibberish' -RAILS_ROOT = File.dirname(__FILE__) + '/..' Gibberish.load_languages! context "After loading languages, Gibberish" do @@ -89,6 +90,18 @@ Gibberish.add_reserved_key key Gibberish.reserved_keys.size.should.equal 2 end + + specify "should have loaded language files from directories other than the default" do + Gibberish.language_paths << File.dirname(__FILE__) + Gibberish.load_languages! + string = "I don't speak Babble." + Gibberish.use_language :es do + string[:no_babble].should.equal "No hablo Bable." + end + Gibberish.use_language :fr do + string[:no_babble].should.equal "Je ne parle pas Babble." + end + end end context "When no language is set" do Index: C:/rails/gibberish/test/lang/fr.yml =================================================================== --- C:/rails/gibberish/test/lang/fr.yml (revision 0) +++ C:/rails/gibberish/test/lang/fr.yml (revision 0) @@ -0,0 +1 @@ +no_babble: Je ne parle pas Babble. \ No newline at end of file Index: C:/rails/gibberish/test/lang/es.yml =================================================================== --- C:/rails/gibberish/test/lang/es.yml (revision 0) +++ C:/rails/gibberish/test/lang/es.yml (revision 0) @@ -0,0 +1 @@ +no_babble: No hablo Bable. \ No newline at end of file Index: C:/rails/gibberish/lib/gibberish/localize.rb =================================================================== --- C:/rails/gibberish/lib/gibberish/localize.rb (revision 307) +++ C:/rails/gibberish/lib/gibberish/localize.rb (working copy) @@ -52,11 +52,16 @@ def load_languages! language_files.each do |file| key = File.basename(file, '.*').to_sym - @@languages[key] = YAML.load_file(file).symbolize_keys + @@languages[key] ||= {} + @@languages[key].merge! YAML.load_file(file).symbolize_keys end languages end + @@language_paths = [RAILS_ROOT] + def language_paths + @@language_paths ||= [] + end private def interpolate_string(string, *args) if args.last.is_a? Hash @@ -75,9 +80,9 @@ def interpolate_with_strings(string, strings) string.gsub(/\{\w+\}/) { strings.shift } end - + def language_files - Dir[File.join(RAILS_ROOT, 'lang', '*.{yml,yaml}')] + @@language_paths.map {|path| Dir[File.join(path, 'lang', '*.{yml,yaml}')]}.flatten end end end