mirror of
https://github.com/discourse/discourse.git
synced 2025-02-01 04:06:14 +08:00
30990006a9
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
61 lines
1.9 KiB
Ruby
Executable File
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
|