History

Refactor I18n class

Jed Fox committed 8 years ago

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

Showing the changes to assets/javascripts (1 of 1 file). Show all

Unified · Split

assets/javascripts/lib/i18n.coffee+22−9
@@ -1,17 +1,30 @@
1class @I18n1class @I18n
2 constructor: (@data, lang = 'en') ->2 default: 'en'
3 @setLanguage lang3 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 = lang7 @interpolate obj[@get_lang obj], substitution
8 true8 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 str27 str
28
29@i18n = new I18n navigator.languages
30@_ = @i18n._