Skip to content
Snippets Groups Projects
Commit 422c48ba authored by Ruben Davila's avatar Ruben Davila
Browse files

Parse translate filters from JS files.

parent 80d7f416
No related branches found
No related tags found
1 merge request!10669Internationalise Cycle Analytics page
Pipeline #
require 'gettext_i18n_rails/haml_parser' 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 module GettextI18nRails
class HamlParser class HamlParser
Loading
@@ -9,14 +13,37 @@ module GettextI18nRails
Loading
@@ -9,14 +13,37 @@ module GettextI18nRails
# If we found a content like "{{ 'Stage' | translate }}" # If we found a content like "{{ 'Stage' | translate }}"
# in a HAML file we convert it to "= _('Stage')", that way # in a HAML file we convert it to "= _('Stage')", that way
# it can be processed by the "rake gettext:find" script. # 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) def self.convert_to_code(text)
# {{ 'Stage' | translate }} => = _('Stage') # {{ 'Stage' | translate }} => = _('Stage')
text.gsub!(/{{ (.*)( \| translate) }}/, "= _(\\1)") text.gsub!(VUE_TRANSLATE_REGEX, "= _(\\1)")
   
# {{ 'user' | translate-plural('users', users.size) }} => = n_('user', 'users', users.size) # {{ '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) old_convert_to_code(text)
end end
end 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment