diff options
author | Ruben Davila <rdavila84@gmail.com> | 2017-04-25 00:01:59 -0500 |
---|---|---|
committer | Ruben Davila <rdavila84@gmail.com> | 2017-04-25 00:01:59 -0500 |
commit | 422c48baa7eeaca025a423c4eb48256c786514ed (patch) | |
tree | 89fd504a87939eea81f7cb1a23c88ff63665a972 /config/initializers | |
parent | 80d7f4166fec5476c07ca7afe78e3e8a50071f2b (diff) | |
download | gitlab-ce-422c48baa7eeaca025a423c4eb48256c786514ed.tar.gz |
Parse translate filters from JS files.
Diffstat (limited to 'config/initializers')
-rw-r--r-- | config/initializers/gettext_rails_i18n_patch.rb | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/config/initializers/gettext_rails_i18n_patch.rb b/config/initializers/gettext_rails_i18n_patch.rb index 3b50501c3da..5570b7e31e9 100644 --- a/config/initializers/gettext_rails_i18n_patch.rb +++ b/config/initializers/gettext_rails_i18n_patch.rb @@ -1,4 +1,8 @@ require 'gettext_i18n_rails/haml_parser' +require 'gettext_i18n_rails_js/parser/javascript' + +VUE_TRANSLATE_REGEX = /{{ ([^{]*)( \| translate) }}/ +VUE_TRANSLATE_PLURAL_REGEX = /{{ ([^{]*)( \| translate-plural\((.*), (.*)\)) }}/ module GettextI18nRails class HamlParser @@ -9,14 +13,37 @@ module GettextI18nRails # If we found a content like "{{ 'Stage' | translate }}" # in a HAML file we convert it to "= _('Stage')", that way # it can be processed by the "rake gettext:find" script. + # Overwrites: https://github.com/grosser/gettext_i18n_rails/blob/8396387a431e0f8ead72fc1cd425cad2fa4992f2/lib/gettext_i18n_rails/haml_parser.rb#L9 def self.convert_to_code(text) # {{ 'Stage' | translate }} => = _('Stage') - text.gsub!(/{{ (.*)( \| translate) }}/, "= _(\\1)") + text.gsub!(VUE_TRANSLATE_REGEX, "= _(\\1)") # {{ 'user' | translate-plural('users', users.size) }} => = n_('user', 'users', users.size) - text.gsub!(/{{ (.*)( \| translate-plural\((.*), (.*)\)) }}/, "= n_(\\1, \\3, \\4)") + text.gsub!(VUE_TRANSLATE_PLURAL_REGEX, "= n_(\\1, \\3, \\4)") old_convert_to_code(text) end end end + +module GettextI18nRailsJs + module Parser + module Javascript + protected + + # Overwrites: https://github.com/webhippie/gettext_i18n_rails_js/blob/46c58db6d2053a4f5f36a0eb024ea706ff5707cb/lib/gettext_i18n_rails_js/parser/javascript.rb#L46 + def collect_for(value) + ::File.open(value) do |f| + f.each_line.each_with_index.collect do |line, idx| + line.gsub!(VUE_TRANSLATE_REGEX, "__(\\1)") + line.gsub!(VUE_TRANSLATE_PLURAL_REGEX, "n__(\\1, \\3, \\4)") + + line.scan(invoke_regex).collect do |function, arguments| + yield(function, arguments, idx + 1) + end + end.inject([], :+).compact + end + end + end + end +end |