feat: prevent translation keys which don't exist in locale files
This commit is contained in:
parent
43740f18f1
commit
5c56370920
6 changed files with 849 additions and 40 deletions
18
.github/workflows/i18n.yml
vendored
Normal file
18
.github/workflows/i18n.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
name: i18n
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches: '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up environment
|
||||||
|
uses: ./.github/actions/setup
|
||||||
|
- name: Check i18n keys
|
||||||
|
run: yarn workspace desktop-client check-i18n --fail-on-update
|
16
packages/desktop-client/i18next-parser.config.js
Normal file
16
packages/desktop-client/i18next-parser.config.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
module.exports = {
|
||||||
|
input: ['src/**/*.js'],
|
||||||
|
output: 'src/locales/$LOCALE.json',
|
||||||
|
locales: ['en-GB', 'es-ES'],
|
||||||
|
sort: true,
|
||||||
|
indentation: 4,
|
||||||
|
// Force usage of JsxLexer for .js files as otherwise we can't pick up <Trans> components.
|
||||||
|
lexers: {
|
||||||
|
js: ['JsxLexer'],
|
||||||
|
ts: ['JsxLexer'],
|
||||||
|
jsx: ['JsxLexer'],
|
||||||
|
tsx: ['JsxLexer'],
|
||||||
|
|
||||||
|
default: ['JsxLexer']
|
||||||
|
}
|
||||||
|
};
|
|
@ -43,6 +43,7 @@
|
||||||
"glamor": "^2.20.40",
|
"glamor": "^2.20.40",
|
||||||
"html-webpack-plugin": "4.0.0-alpha.2",
|
"html-webpack-plugin": "4.0.0-alpha.2",
|
||||||
"i18next": "^21.9.1",
|
"i18next": "^21.9.1",
|
||||||
|
"i18next-parser": "^6.5.0",
|
||||||
"identity-obj-proxy": "3.0.0",
|
"identity-obj-proxy": "3.0.0",
|
||||||
"load-js": "^3.0.3",
|
"load-js": "^3.0.3",
|
||||||
"mini-css-extract-plugin": "0.4.3",
|
"mini-css-extract-plugin": "0.4.3",
|
||||||
|
@ -88,7 +89,8 @@
|
||||||
"watch": "cross-env PORT=3001 node scripts/start.js",
|
"watch": "cross-env PORT=3001 node scripts/start.js",
|
||||||
"build": "cross-env INLINE_RUNTIME_CHUNK=false node scripts/build.js",
|
"build": "cross-env INLINE_RUNTIME_CHUNK=false node scripts/build.js",
|
||||||
"build:browser": "./bin/build-browser",
|
"build:browser": "./bin/build-browser",
|
||||||
"lint": "eslint src"
|
"lint": "eslint src",
|
||||||
|
"check-i18n": "i18next"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"electron 3.0"
|
"electron 3.0"
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
"needAccountMessage": "Para que Actual sea útil, debe <strong>agregar una cuenta</strong>. Puedes vincular la cuenta para descargar transacciones automáticamente o administrala localmente."
|
"needAccountMessage": "Para que Actual sea útil, debe <strong>agregar una cuenta</strong>. Puedes vincular la cuenta para descargar transacciones automáticamente o administrala localmente."
|
||||||
},
|
},
|
||||||
"bootstrap": {
|
"bootstrap": {
|
||||||
"title": "Bootstrap esta instancia de Actual",
|
|
||||||
"setPassword": "Establecer una contraseña para esta instancia de servidor",
|
"setPassword": "Establecer una contraseña para esta instancia de servidor",
|
||||||
|
"title": "Bootstrap esta instancia de Actual",
|
||||||
"tryDemo": "Probar Demo"
|
"tryDemo": "Probar Demo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ i18n
|
||||||
// you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage
|
// you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage
|
||||||
// if you're using a language detector, do not define the lng option
|
// if you're using a language detector, do not define the lng option
|
||||||
|
|
||||||
|
// We enforce that a locales have all keys so we treat empty string as missing value.
|
||||||
|
returnEmptyString: false,
|
||||||
interpolation: {
|
interpolation: {
|
||||||
escapeValue: false // react already safes from xss
|
escapeValue: false // react already safes from xss
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue