-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
implement i18next and i18next-scanner
- Loading branch information
1 parent
c24efb1
commit 45bc046
Showing
9 changed files
with
780 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
const typescriptTransform = require('i18next-scanner-typescript'); | ||
|
||
const fs = require('fs'); | ||
const chalk = require('chalk'); | ||
|
||
module.exports = { | ||
input: [ | ||
'client/src/**/*.{tsx,ts}', | ||
// Use ! to filter out files or directories | ||
'!client/i18n/**', | ||
'!**/node_modules/**', | ||
], | ||
output: './client/public/locales', | ||
options: { | ||
debug: true, | ||
func: { | ||
list: ['i18next.t', 'i18n.t', 't'], | ||
extensions: ['.js', '.jsx'] // not .ts or .tsx since we use i18next-scanner-typescript! | ||
}, | ||
trans: { | ||
component: 'Trans', | ||
i18nKey: 'i18nKey', | ||
defaultsKey: 'defaults', | ||
extensions: ['.js', '.jsx'], // not .ts or .tsx since we use i18next-scanner-typescript! | ||
fallbackKey: (ns, value) => {return value}, | ||
|
||
// https://react.i18next.com/latest/trans-component#usage-with-simple-html-elements-like-less-than-br-greater-than-and-others-v10.4.0 | ||
supportBasicHtmlNodes: true, // Enables keeping the name of simple nodes (e.g. <br/>) in translations instead of indexed keys. | ||
keepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], // Which nodes are allowed to be kept in translations during defaultValue generation of <Trans>. | ||
|
||
// // https://github.com/acornjs/acorn/tree/master/acorn#interface | ||
// acorn: { | ||
// ecmaVersion: 2020, | ||
// sourceType: 'module', // defaults to 'module' | ||
// } | ||
}, | ||
lngs: ['en','de'], | ||
ns: [], | ||
defaultLng: 'en', | ||
defaultNs: 'translation', | ||
defaultValue: (lng, ns, key) => { | ||
if (lng === 'en') { | ||
return key; // Use key as value for base language | ||
} | ||
return ''; // Return empty string for other languages | ||
}, | ||
resource: { | ||
loadPath: './{{lng}}/{{ns}}.json', | ||
savePath: './{{lng}}/{{ns}}.json', | ||
jsonIndent: 2, | ||
lineEnding: '\n' | ||
}, | ||
nsSeparator: false, // namespace separator | ||
keySeparator: false, // key separator | ||
plurals: false, | ||
interpolation: { | ||
prefix: '{{', | ||
suffix: '}}' | ||
}, | ||
metadata: {}, | ||
allowDynamicKeys: false, | ||
}, | ||
|
||
transform: typescriptTransform( | ||
// options | ||
{ | ||
// default value for extensions | ||
extensions: [".ts", ".tsx"], | ||
// optional ts configuration | ||
tsOptions: { | ||
target: "es2017", | ||
}, | ||
}, | ||
|
||
function(outputText, file, enc, done) { | ||
'use strict'; | ||
const parser = this.parser; | ||
|
||
parser.parseTransFromString(outputText); | ||
parser.parseFuncFromString(outputText); | ||
|
||
// const content = fs.readFileSync(file.path, enc); | ||
// let count = 0; | ||
|
||
// parser.parseFuncFromString(content, { list: ['i18n._', 'i18n.__'] }, (key, options) => { | ||
// parser.set(key, Object.assign({}, options, { | ||
// nsSeparator: false, | ||
// keySeparator: false | ||
// })); | ||
// ++count; | ||
// }); | ||
|
||
// if (count > 0) { | ||
// console.log(`[i18next-scanner] transform: count=${chalk.cyan(count)}, file=${chalk.yellow(JSON.stringify(file.relative))}`); | ||
// } | ||
|
||
done(); | ||
} | ||
), | ||
|
||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"Lean Game Server": "Lean-Spieleserver", | ||
"<p>Game rules determine if it is allowed to skip levels and if the games runs checks to only allow unlocked tactics and theorems in proofs.</p><1>Note: \"Unlocked\" tactics (or theorems) are determined by two things: The set of minimal tactics needed to solve a level, plus any tactics you unlocked in another level. That means if you unlock <1>simp</1> in a level, you can use it henceforth in any level.</1><p>The options are:</p>": "<p>Die Spielregeln bestimmen ob es erlaubt ist, Levels zu überspringen und ob das Spiel überprüft welche Taktiken und Theoreme freigeschaltet sind und nur diese im Beweis akzeptiert.</p><1>Bemerkung: \"Freigeschaltete\" Taktiken (und Theoreme) werden durch zwei Faktoren bestimmt: The Menge der Taktiken die minimal notwending sind um den Level zu lösen und dazu die Menge aller Taktiken, die in einem anderen Level freigeschaltet wurden. Das bedeutet wenn <1>simp</1> in einem Level freigeschaltet wird, kann diese Taktik danach in jeglichen Levels verwendet werden.", | ||
"Game Rules": "Spielregeln", | ||
"levels": "Levels", | ||
"tactics": "Taktiken", | ||
"regular": "regulär", | ||
"relaxed": "relaxed", | ||
"none": "keine", | ||
"Rules": "Regend" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"Lean Game Server": "Lean Game Server", | ||
"<p>Game rules determine if it is allowed to skip levels and if the games runs checks to only allow unlocked tactics and theorems in proofs.</p><1>Note: \"Unlocked\" tactics (or theorems) are determined by two things: The set of minimal tactics needed to solve a level, plus any tactics you unlocked in another level. That means if you unlock <1>simp</1> in a level, you can use it henceforth in any level.</1><p>The options are:</p>": "<p>Game rules determine if it is allowed to skip levels and if the games runs checks to only allow unlocked tactics and theorems in proofs.</p><1>Note: \"Unlocked\" tactics (or theorems) are determined by two things: The set of minimal tactics needed to solve a level, plus any tactics you unlocked in another level. That means if you unlock <1>simp</1> in a level, you can use it henceforth in any level.</1><p>The options are:</p>", | ||
"Game Rules": "Game Rules", | ||
"levels": "levels", | ||
"tactics": "tactics", | ||
"regular": "regular", | ||
"relaxed": "relaxed", | ||
"none": "none", | ||
"Rules": "Rules" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.