Merge branch 'js-load-specific-locales' into 'master'
Load only the currently needed JS locale file Closes #38470 See merge request gitlab-org/gitlab-ce!14533
This commit is contained in:
commit
b9f78eae27
6 changed files with 19 additions and 26 deletions
|
@ -1,30 +1,12 @@
|
|||
import Jed from 'jed';
|
||||
|
||||
import sprintf from './sprintf';
|
||||
|
||||
/**
|
||||
This is required to require all the translation folders in the current directory
|
||||
this saves us having to do this manually & keep up to date with new languages
|
||||
**/
|
||||
function requireAll(requireContext) { return requireContext.keys().map(requireContext); }
|
||||
|
||||
const allLocales = requireAll(require.context('./', true, /^(?!.*(?:index.js$)).*\.js$/));
|
||||
const locales = allLocales.reduce((d, obj) => {
|
||||
const data = d;
|
||||
const localeKey = Object.keys(obj)[0];
|
||||
|
||||
data[localeKey] = obj[localeKey];
|
||||
|
||||
return data;
|
||||
}, {});
|
||||
|
||||
const langAttribute = document.querySelector('html').getAttribute('lang');
|
||||
const lang = (langAttribute || 'en').replace(/-/g, '_');
|
||||
const locale = new Jed(locales[lang]);
|
||||
const locale = new Jed(window.translations || {});
|
||||
|
||||
/**
|
||||
Translates `text`
|
||||
|
||||
@param text The text to be translated
|
||||
@returns {String} The translated text
|
||||
**/
|
||||
|
|
|
@ -37,9 +37,9 @@
|
|||
- if content_for?(:library_javascripts)
|
||||
= yield :library_javascripts
|
||||
|
||||
= javascript_include_tag asset_path("locale/#{I18n.locale.to_s || I18n.default_locale.to_s}/app.js")
|
||||
= webpack_bundle_tag "webpack_runtime"
|
||||
= webpack_bundle_tag "common"
|
||||
= webpack_bundle_tag "locale"
|
||||
= webpack_bundle_tag "main"
|
||||
= webpack_bundle_tag "raven" if current_application_settings.clientside_sentry_enabled
|
||||
= webpack_bundle_tag "test" if Rails.env.test?
|
||||
|
|
|
@ -105,6 +105,7 @@ module Gitlab
|
|||
config.assets.precompile << "lib/ace.js"
|
||||
config.assets.precompile << "vendor/assets/fonts/*"
|
||||
config.assets.precompile << "test.css"
|
||||
config.assets.precompile << "locale/**/app.js"
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets
|
||||
config.assets.version = '1.0'
|
||||
|
|
|
@ -39,3 +39,17 @@ module GettextI18nRailsJs
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
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
|
||||
|
|
|
@ -122,10 +122,6 @@ var config = {
|
|||
name: '[name].[hash].[ext]',
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /locale\/\w+\/(.*)\.js$/,
|
||||
loader: 'exports-loader?locales',
|
||||
},
|
||||
{
|
||||
test: /monaco-editor\/\w+\/vs\/loader\.js$/,
|
||||
use: [
|
||||
|
@ -224,7 +220,7 @@ var config = {
|
|||
|
||||
// create cacheable common library bundles
|
||||
new webpack.optimize.CommonsChunkPlugin({
|
||||
names: ['main', 'locale', 'common', 'webpack_runtime'],
|
||||
names: ['main', 'common', 'webpack_runtime'],
|
||||
}),
|
||||
|
||||
// enable scope hoisting
|
||||
|
|
|
@ -3,8 +3,8 @@ namespace :gitlab do
|
|||
desc 'GitLab | Assets | Compile all frontend assets'
|
||||
task compile: [
|
||||
'yarn:check',
|
||||
'rake:assets:precompile',
|
||||
'gettext:po_to_json',
|
||||
'rake:assets:precompile',
|
||||
'webpack:compile',
|
||||
'fix_urls'
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue