Skip to content
Snippets Groups Projects
Commit 412571a4 authored by Tim Zallmann's avatar Tim Zallmann Committed by Phil Hughes
Browse files

Load only the currently needed JS locale file

parent 08678441
No related branches found
No related tags found
No related merge requests found
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
**/
Loading
Loading
Loading
Loading
@@ -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?
Loading
Loading
Loading
Loading
@@ -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'
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -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: [
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment