43f72720f2
* feat(i18n): add Uzbek (Oʻzbek) translation Adds `uz` as a first-class supported locale across the Readest app and the readest.koplugin companion. Also refactors the supported locale set to source from a single ground-truth file (`apps/readest-app/i18n-langs.json`) consumed by both the i18next runtime and the i18next-scanner config, and replaces a NUL-byte sentinel in `extract-i18n.js#unescapePo` with a single-pass regex so git no longer treats the script as binary. Closes #4053 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(i18n): add Brazilian Portuguese (pt-BR) translation Adds `pt-BR` as a regional variant supported alongside `pt`. Falls back to `pt` then `en` for any future missing keys, so European Portuguese gracefully covers gaps. Translations follow Brazilian conventions (arquivo / tela / excluir / salvar / baixar / senha, gerundive verb forms) rather than verbatim copying the European catalog. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
36 lines
743 B
JavaScript
36 lines
743 B
JavaScript
const lngs = require('./i18n-langs.json');
|
|
|
|
const options = {
|
|
debug: false,
|
|
sort: false,
|
|
func: {
|
|
list: ['_'],
|
|
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
|
},
|
|
lngs,
|
|
ns: ['translation'],
|
|
defaultNs: 'translation',
|
|
defaultValue: '__STRING_NOT_TRANSLATED__',
|
|
resource: {
|
|
loadPath: './public/locales/{{lng}}/{{ns}}.json',
|
|
savePath: './public/locales/{{lng}}/{{ns}}.json',
|
|
jsonIndent: 2,
|
|
lineEnding: '\n',
|
|
},
|
|
keySeparator: false,
|
|
nsSeparator: false,
|
|
interpolation: {
|
|
prefix: '{{',
|
|
suffix: '}}',
|
|
},
|
|
metadata: {},
|
|
allowDynamicKeys: true,
|
|
removeUnusedKeys: true,
|
|
};
|
|
|
|
module.exports = {
|
|
input: ['src/**/*.{js,jsx,ts,tsx}', '!src/**/*.test.{js,jsx,ts,tsx}'],
|
|
output: '.',
|
|
options,
|
|
};
|