mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: web and tauri project (#4996)
* chore: web and tauri project fix: clippy * fix: update version
This commit is contained in:
63
frontend/appflowy_web_app/scripts/i18n.cjs
Normal file
63
frontend/appflowy_web_app/scripts/i18n.cjs
Normal file
@ -0,0 +1,63 @@
|
||||
const languages = [
|
||||
'ar-SA',
|
||||
'ca-ES',
|
||||
'de-DE',
|
||||
'en',
|
||||
'es-VE',
|
||||
'eu-ES',
|
||||
'fr-FR',
|
||||
'hu-HU',
|
||||
'id-ID',
|
||||
'it-IT',
|
||||
'ja-JP',
|
||||
'ko-KR',
|
||||
'pl-PL',
|
||||
'pt-BR',
|
||||
'pt-PT',
|
||||
'ru-RU',
|
||||
'sv-SE',
|
||||
'th-TH',
|
||||
'tr-TR',
|
||||
'zh-CN',
|
||||
'zh-TW',
|
||||
];
|
||||
|
||||
const fs = require('fs');
|
||||
languages.forEach(language => {
|
||||
const json = require(`../../resources/translations/${language}.json`);
|
||||
const outputJSON = flattenJSON(json);
|
||||
const output = JSON.stringify(outputJSON);
|
||||
const isExistDir = fs.existsSync('./src/@types/translations');
|
||||
if (!isExistDir) {
|
||||
fs.mkdirSync('./src/@types/translations');
|
||||
}
|
||||
fs.writeFile(`./src/@types/translations/${language}.json`, new Uint8Array(Buffer.from(output)), (res) => {
|
||||
if (res) {
|
||||
console.error(res);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
function flattenJSON(obj, prefix = '') {
|
||||
let result = {};
|
||||
const pluralsKey = ["one", "other", "few", "many", "two", "zero"];
|
||||
|
||||
for (let key in obj) {
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
||||
|
||||
const nestedKeys = flattenJSON(obj[key], `${prefix}${key}.`);
|
||||
result = { ...result, ...nestedKeys };
|
||||
} else {
|
||||
let newKey = `${prefix}${key}`;
|
||||
let replaceChar = '{'
|
||||
if (pluralsKey.includes(key)) {
|
||||
newKey = `${prefix.slice(0, -1)}_${key}`;
|
||||
}
|
||||
result[newKey] = obj[key].replaceAll('{', '{{').replaceAll('}', '}}');
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user