Commit c7b12244 by Vladislav Lagunov

Поддержка *.po формата

parent 74013b7d
......@@ -40,7 +40,9 @@ export default withGettext(gettext)(Widget);
```
## Формат *.po.yml
## Формат *.po.yml
> 2018-10-31 DEPRECATED: Решил использовать стантартный формат *.po
Альтернативный формат, для *.po файлов предназначен предназначен для
более простой манипуляции с gettext-данными, и для обеспечения
......
......@@ -58,6 +58,7 @@ export function makeGettext(...webpackContexts): DeferredGettext {
function flattenModules(xs: any[]) {
return Array.prototype.concat.apply([], xs.map(x => {
if ('__esModule' in x) x = x.default;
return Array.isArray(x) ? flattenModules(x) : [x]
}));
}
......@@ -120,15 +121,21 @@ export function requireTranslations(webpackContext /*: WebpackContext*/): Transl
*/
function assignData(dst: Translations, ...srcs: GettextData[]): Translations {
srcs.forEach(data => {
const locale = data[''].locale; if (!locale || typeof(locale) !== 'string') return;
const explicitKeys = data['%podata'];
const locale_ = data[''].language || data[''].locale; if (!locale_ || typeof(locale_) !== 'string') return;
const locale = locale_.replace(/_/g, '-');
const podata = data['%podata'];
for (const k of Object.keys(data)) {
if (k === '' || k === '%podata') continue;
dst[locale] = dst[locale] || {};
dst[locale][k] = data[k];
if (Array.isArray(data[k]) && data[k][0] === null) {
dst[locale][k] = data[k].slice(1);
if (dst[locale][k].length === 1) dst[locale][k] = dst[locale][k][0];
} else {
dst[locale][k] = data[k];
}
}
if (explicitKeys) for (const explicit of explicitKeys) {
if (podata) for (const explicit of podata) {
const key = explicit.msgctxt ? explicit.msgctxt + CONTEXT_DELIMITER + explicit.msgid : explicit.msgid;
dst[locale] = dst[locale] || {};
dst[locale][key] = explicit.msgstr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment