diff --git a/lib/twine/formatters/flash.rb b/lib/twine/formatters/flash.rb index 5a1855b..629c4d0 100644 --- a/lib/twine/formatters/flash.rb +++ b/lib/twine/formatters/flash.rb @@ -20,7 +20,8 @@ module Twine end def determine_language_given_path(path) - return + # match two-letter language code, optionally followed by a two letter region code + path.split(File::SEPARATOR).reverse.find { |segment| segment =~ /^([a-z]{2}(-[a-z]{2})?)$/i } end def set_translation_for_key(key, lang, value) diff --git a/test/test_formatters.rb b/test/test_formatters.rb index 38fb0d2..df85ab7 100644 --- a/test/test_formatters.rb +++ b/test/test_formatters.rb @@ -352,4 +352,13 @@ class TestFlashFormatter < FormatterTest def test_format_value_converts_placeholders assert_equal "value {0}", @formatter.format_value('value %d') end + + def test_deducts_language_from_resource_folder + language = %w(en de fr).sample + assert_equal language, @formatter.determine_language_given_path("locale/#{language}") + end + + def test_deducts_language_and_region_from_resource_folder + assert_equal 'de-AT', @formatter.determine_language_given_path("locale/de-AT") + end end