Showing the changes to assets/javascripts (1 of 1 file). Show all
Unified · Split
| @@ -1,17 +1,30 @@ | |||
| 1 | class @I18n | 1 | class @I18n |
| 2 | constructor: (@data, lang = 'en') -> | 2 | default: 'en' |
| 3 | @setLanguage lang | 3 | constructor: (@langs = [@default]) -> |
| 4 | 4 | ||
| 5 | setLanguage: (lang) -> | 5 | _: (obj, substitution) => |
| 6 | return false unless @data[lang] | 6 | if typeof obj is 'object' or typeof obj is 'function' |
| 7 | @lang = lang | 7 | @interpolate obj[@get_lang obj], substitution |
| 8 | true | 8 | else |
| 9 | obj | ||
| 9 | 10 | ||
| 10 | _: (key, substitution) -> | 11 | get_lang: (obj) -> |
| 11 | str = @data[@lang][key] | 12 | for lang in @langs |
| 12 | return unless str? | 13 | # eg. en-US |
| 14 | return lang if obj[lang] | ||
| 13 | 15 | ||
| 16 | lang = lang.replace /_\w+$/, '' | ||
| 17 | # eg. en | ||
| 18 | return lang if obj[lang] | ||
| 19 | |||
| 20 | @default | ||
| 21 | |||
| 22 | interpolate: (str, substitution) -> | ||
| 23 | return '' if not str? | ||
| 14 | if substitution? | 24 | if substitution? |
| 15 | for key in Object.keys(substitution) | 25 | for key in Object.keys(substitution) |
| 16 | str = str.replace("{#{key}}", substitution[key]) | 26 | str = str.replace("{#{key}}", substitution[key]) |
| 17 | str | 27 | str |
| 28 | |||
| 29 | @i18n = new I18n navigator.languages | ||
| 30 | @_ = @i18n._ | ||