2021-02-03 16:09:17 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-04-25 01:01:59 -04:00
|
|
|
require 'gettext_i18n_rails_js/parser/javascript'
|
2018-08-16 15:03:57 -04:00
|
|
|
require 'json'
|
2017-04-25 01:01:59 -04:00
|
|
|
|
|
|
|
module GettextI18nRailsJs
|
|
|
|
module Parser
|
|
|
|
module Javascript
|
2017-04-25 22:47:49 -04:00
|
|
|
# This is required to tell the `rake gettext:find` script to use the Javascript
|
|
|
|
# parser for *.vue files.
|
|
|
|
#
|
|
|
|
# Overwrites: https://github.com/webhippie/gettext_i18n_rails_js/blob/46c58db6d2053a4f5f36a0eb024ea706ff5707cb/lib/gettext_i18n_rails_js/parser/javascript.rb#L36
|
|
|
|
def target?(file)
|
|
|
|
[
|
|
|
|
".js",
|
|
|
|
".jsx",
|
|
|
|
".vue"
|
|
|
|
].include? ::File.extname(file)
|
|
|
|
end
|
2018-08-16 15:03:57 -04:00
|
|
|
|
|
|
|
def collect_for(file)
|
|
|
|
gettext_messages_by_file[file] || []
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def gettext_messages_by_file
|
2020-04-29 11:09:58 -04:00
|
|
|
@gettext_messages_by_file ||= Gitlab::Json.parse(load_messages)
|
2018-08-16 15:03:57 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def load_messages
|
|
|
|
`node scripts/frontend/extract_gettext_all.js --all`
|
|
|
|
end
|
2017-04-25 01:01:59 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2017-10-04 07:23:52 -04:00
|
|
|
|
|
|
|
class PoToJson
|
|
|
|
# This is required to modify the JS locale file output to our import needs
|
|
|
|
# Overwrites: https://github.com/webhippie/po_to_json/blob/master/lib/po_to_json.rb#L46
|
|
|
|
def generate_for_jed(language, overwrite = {})
|
|
|
|
@options = parse_options(overwrite.merge(language: language))
|
|
|
|
@parsed ||= inject_meta(parse_document)
|
|
|
|
|
|
|
|
generated = build_json_for(build_jed_for(@parsed))
|
|
|
|
[
|
|
|
|
"window.translations = #{generated};"
|
|
|
|
].join(" ")
|
|
|
|
end
|
|
|
|
end
|