i18n: locales support fixes

This commit is contained in:
Roman committed 2020-06-11 11:27:41 +03:00
1 parent 7efc54424a
commit b4101d986c
10 files changed
+54 -22

No files matched your search

+11 -4
View File
@@ -1,8 +1,10 @@
import moment from "moment";
import { observable, reaction } from "mobx";
import { setupI18n } from "@lingui/core";
import { autobind, createStorage } from "./utils";
import orderBy from "lodash/orderBy"
import { autobind, createStorage } from "./utils";
const plurals: Record<string, Function> = require('make-plural/plurals');
export interface ILanguage {
code: string;
@@ -40,17 +42,22 @@ export class LocalizationStore {
}
async load(locale: string) {
const catalog = await import(`../locales/${locale}/messages.po`);
return _i18n.load(locale, catalog);
const { messages } = await import(
/* webpackChunkName: "i18n-[request]" */
`@lingui/loader!../../locales/${locale}/messages.po`
);
_i18n.loadLocaleData(locale, { plurals: plurals[locale] });
_i18n.load(locale, messages);
}
async setLocale(locale: string) {
await this.load(locale);
await _i18n.activate(locale);
// set moment's locale before activeLang for proper next render() in app
moment.locale(locale);
this.activeLang = locale;
await _i18n.activate(locale);
}
}
+2 -6
View File
@@ -2,15 +2,11 @@
const path = require("path");
module.exports = function (config, env) {
const {module, plugins} = config;
const {module} = config;
const {rules} = module;
// localization support
// https://lingui.js.org/guides/typescript.html
rules.push({
test: /\.po$/,
use: '@lingui/loader'
});
patchLoader(".tsx", "ts-loader", loader => {
loader.options = Object.assign({}, loader.options, {
compilerOptions: {
@@ -43,7 +39,7 @@ module.exports = function (config, env) {
let loader = typeof loaders[index] === "string" ? {loader: loaders[index]} : loaders[index];
loaders[index] = updater(loader);
rule.use = loaders.flat();
console.info(`Patched renderer's webpack loader "${loaderName}"`, loader);
console.info(`Patched webpack's renderer config for "${loaderName}" in ${__filename}`, loader);
}
}