discourse/script/pull_translations.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

61 lines
1.9 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
require 'bundler/inline'
gemfile(true) do
gem 'translations-manager', git: 'https://github.com/discourse/translations-manager.git'
end
require 'translations_manager'
def expand_path(path)
File.expand_path("../../#{path}", __FILE__)
end
def supported_locales
Dir.glob(expand_path('config/locales/client.*.yml'))
.map { |x| x.split('.')[-2] }
.select { |x| x != 'en' }
.sort - TranslationsManager::BROKEN_LOCALES
end
YML_DIRS = ['config/locales',
'plugins/poll/config/locales',
'plugins/discourse-details/config/locales',
'plugins/discourse-local-dates/config/locales',
'plugins/discourse-narrative-bot/config/locales',
'plugins/discourse-nginx-performance-report/config/locales',
'plugins/discourse-presence/config/locales'].map { |dir| expand_path(dir) }
YML_FILE_PREFIXES = ['server', 'client']
TX_CONFIG = expand_path('.tx/config')
JS_LOCALE_DIR = expand_path('app/assets/javascripts/locales')
if ARGV.empty? && TranslationsManager::SUPPORTED_LOCALES != supported_locales
STDERR.puts <<~MESSAGE
The supported locales are out of sync.
Please update the TranslationsManager::SUPPORTED_LOCALES in translations-manager.
https://github.com/discourse/translations-manager
The following locales are currently supported by Discourse:
MESSAGE
STDERR.puts supported_locales.map { |l| "'#{l}'" }.join(",\n")
exit 1
end
TranslationsManager::TransifexUpdater.new(YML_DIRS, YML_FILE_PREFIXES, *ARGV).perform(tx_config_filename: TX_CONFIG)
TranslationsManager::SUPPORTED_LOCALES.each do |locale|
filename = File.join(JS_LOCALE_DIR, "#{locale}.js.erb")
next if File.exists?(filename)
File.write(filename, <<~ERB)
//= depend_on 'client.#{locale}.yml'
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:#{locale}) %>
ERB
end