summaryrefslogtreecommitdiff
path: root/config/initializers
diff options
context:
space:
mode:
authorRuben Davila <rdavila84@gmail.com>2017-04-25 00:01:59 -0500
committerRuben Davila <rdavila84@gmail.com>2017-04-25 00:01:59 -0500
commit422c48baa7eeaca025a423c4eb48256c786514ed (patch)
tree89fd504a87939eea81f7cb1a23c88ff63665a972 /config/initializers
parent80d7f4166fec5476c07ca7afe78e3e8a50071f2b (diff)
downloadgitlab-ce-422c48baa7eeaca025a423c4eb48256c786514ed.tar.gz
Parse translate filters from JS files.
Diffstat (limited to 'config/initializers')
-rw-r--r--config/initializers/gettext_rails_i18n_patch.rb31
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