History

Refactor I18n class

Jed Fox committed 8 years ago

Commit 75b3ab91 parent d9a11c21 file · +22 −9Browse files

Unified · Split

assets/javascripts/lib/i18n.coffee+22−9
@@ -1,17 +1,30 @@
11 class @I18n
2− constructor: (@data, lang = 'en') ->
3− @setLanguage lang
2+ default: 'en'
3+ constructor: (@langs = [@default]) ->
44
5− setLanguage: (lang) ->
6− return false unless @data[lang]
7− @lang = lang
8− true
5+ _: (obj, substitution) =>
6+ if typeof obj is 'object' or typeof obj is 'function'
7+ @interpolate obj[@get_lang obj], substitution
8+ else
9+ obj
910
10− _: (key, substitution) ->
11− str = @data[@lang][key]
12− return unless str?
11+ get_lang: (obj) ->
12+ for lang in @langs
13+ # eg. en-US
14+ return lang if obj[lang]
1315
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?
1424 if substitution?
1525 for key in Object.keys(substitution)
1626 str = str.replace("{#{key}}", substitution[key])
1727 str
28+
29+@i18n = new I18n navigator.languages
30+@_ = @i18n._