diff options
| author | Omar Roth <omarroth@hotmail.com> | 2019-04-28 14:50:17 -0500 |
|---|---|---|
| committer | Omar Roth <omarroth@hotmail.com> | 2019-04-28 14:50:17 -0500 |
| commit | 6cdb6ec711794c2887da03c0e5d3cfac67bded3f (patch) | |
| tree | ae7142425c08d462c1796ccc9848270dcb80f858 /src | |
| parent | 03891b66b655a972f75a66a6764dc180059dc435 (diff) | |
| download | invidious-6cdb6ec711794c2887da03c0e5d3cfac67bded3f.tar.gz invidious-6cdb6ec711794c2887da03c0e5d3cfac67bded3f.tar.bz2 invidious-6cdb6ec711794c2887da03c0e5d3cfac67bded3f.zip | |
Add support for plurlization to locales
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/helpers/i18n.cr | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/invidious/helpers/i18n.cr b/src/invidious/helpers/i18n.cr index 5acdcfc5..c3d3fbf4 100644 --- a/src/invidious/helpers/i18n.cr +++ b/src/invidious/helpers/i18n.cr @@ -7,8 +7,24 @@ def translate(locale : Hash(String, JSON::Any) | Nil, translation : String, text # puts "Could not find translation for #{translation.dump}" # end - if locale && locale[translation]? && !locale[translation].as_s.empty? - translation = locale[translation].as_s + if locale && locale[translation]? + case locale[translation] + when .as_h? + match_length = 0 + + locale[translation].as_h.each do |key, value| + if md = text.try &.match(/#{key}/) + if md[0].size >= match_length + translation = value.as_s + match_length = md[0].size + end + end + end + when .as_s? + if !locale[translation].as_s.empty? + translation = locale[translation].as_s + end + end end if text |
