Skip to content

Commit

Permalink
Check i18n file for missing variables (#18762)
Browse files Browse the repository at this point in the history
  • Loading branch information
sampaiodiego authored Sep 21, 2020
1 parent fb4fd9e commit 1e608d0
Show file tree
Hide file tree
Showing 57 changed files with 157 additions and 307 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ jobs:
- run: meteor npm run lint

- run: meteor npm run translation-check

- name: Launch MongoDB
uses: wbari/[email protected]
with:
Expand Down
90 changes: 90 additions & 0 deletions .scripts/check-i18n.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
const fs = require('fs');

const fg = require('fast-glob');

const checkFiles = async (path, source) => {
const sourceFile = JSON.parse(fs.readFileSync(`${ path }${ source }`, 'utf8'));

const regexVar = /__([a-zA-Z_]+?)__/g;

const usedKeys = Object.entries(sourceFile)
.filter(([, value]) => regexVar.exec(value))
.map(([key, value]) => {
const replaces = value.match(regexVar);
return {
key,
replaces,
};
});

const validateKeys = (json) =>
usedKeys
.filter(({ key }) => typeof json[key] !== 'undefined')
.reduce((prev, cur) => {
const { key, replaces } = cur;

const miss = replaces.filter((replace) => json[key].indexOf(replace) === -1);

if (miss.length > 0) {
prev.push({ key, miss });
}

return prev;
}, []);

const i18nFiles = await fg([`${ path }/**/*.i18n.json`]);

// const getInvalidKeys = (json) =>
// usedKeys
// .filter(({ key }) => typeof json[key] !== 'undefined')
// .filter(({ key, replaces }) => {
// const miss = replaces.filter((replace) => json[key].indexOf(replace) === -1);

// return miss.length > 0;
// })
// .map(({ key }) => key);

// const removeMissingKeys = () => {
// const allKeys = Object.keys(sourceFile);
// i18nFiles.forEach((file) => {
// const json = JSON.parse(fs.readFileSync(file, 'utf8'));

// const invalidKeys = getInvalidKeys(json);

// const validKeys = allKeys.filter((key) => !invalidKeys.includes(key));
// // console.log('validKeys', file, validKeys);

// fs.writeFileSync(file, JSON.stringify(json, validKeys, 2));
// });
// };

let totalErrors = 0;
i18nFiles.filter((file) => {
const json = JSON.parse(fs.readFileSync(file, 'utf8'));

const result = validateKeys(json);

if (result.length === 0) {
return true;
}

totalErrors += result.length;

console.log('\n## File', file, `(${ result.length } errors)`);

result.forEach(({ key, miss }) => {
console.log('\n- Key:', key, '\n Missing variables:', miss.join(', '));
});

return false;
});

if (totalErrors > 0) {
console.error(`\n${ totalErrors } errors found`);
process.exit(1);
}

process.exit(0);
};

checkFiles('./packages/rocketchat-i18n', '/i18n/en.i18n.json');
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"testunit-watch": "mocha --watch --config ./mocha.opts.js",
"test": "npm run testapi && npm run testui",
"translation-diff": "node .scripts/translationDiff.js",
"translation-check": "node .scripts/check-i18n.js",
"translation-fix-order": "node .scripts/fix-i18n.js",
"version": "node .scripts/version.js",
"set-version": "node .scripts/set-version.js",
Expand Down
5 changes: 2 additions & 3 deletions packages/rocketchat-i18n/i18n/af.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1089,7 +1089,7 @@
"error-room-is-not-closed": "Kamer is nie gesluit nie",
"error-the-field-is-required": "Die veld __field__ is nodig.",
"error-this-is-not-a-livechat-room": "Dit is nie 'n Livechat-kamer nie",
"error-too-many-requests": "Fout, te veel versoeke. Hou asseblief vertraag. Jy moet __sekonds__ sekondes wag voordat jy weer probeer.",
"error-too-many-requests": "Fout, te veel versoeke. Hou asseblief vertraag. Jy moet __seconds__ sekondes wag voordat jy weer probeer.",
"error-user-has-no-roles": "Gebruiker het geen rolle nie",
"error-user-is-not-activated": "Gebruiker is nie geaktiveer nie",
"error-user-limit-exceeded": "Die aantal gebruikers wat u probeer uitnooi na # kanaalnaam, oorskry die limiet wat deur die administrateur gestel is",
Expand Down Expand Up @@ -2664,7 +2664,7 @@
"User_Presence": "Gebruiker Teenwoordigheid",
"User_removed": "Gebruiker verwyder",
"User_removed_by": "Gebruiker <em>__user_removed__</em>verwyder deur <em>__user_by__</em>.",
"User_sent_a_message_on_channel": "<strong>__username__</strong> het 'n boodskap gestuur op <strong>__kanaal__</strong>",
"User_sent_a_message_on_channel": "<strong>__username__</strong> het 'n boodskap gestuur op <strong>__channel__</strong>",
"User_sent_a_message_to_you": "<strong>__username__</strong> het vir jou 'n boodskap gestuur",
"user_sent_an_attachment": "__user__ het 'n aanhangsel gestuur",
"User_Settings": "Gebruikersinstellings",
Expand All @@ -2685,7 +2685,6 @@
"UserDataDownload_EmailBody": "Jou data lêer is nou gereed om af te laai. Klik <a href=\"__download_link__\">hier</a> om dit af te laai.",
"UserDataDownload_EmailSubject": "Jou data lêer is gereed om af te laai",
"UserDataDownload_Requested": "Laai Lêer Gevra",
"UserDataDownload_Requested_Text": "Jou data lêer sal gegenereer word. 'N Skakel om dit te laai sal na u e-pos gestuur word wanneer dit gereed is.",
"UserDataDownload_RequestExisted_Text": "Jou data lêer word reeds gegenereer. 'N Skakel om dit te laai sal na u e-pos gestuur word wanneer dit gereed is.",
"Username": "Gebruikersnaam",
"Username_already_exist": "Gebruikersnaam bestaan ​​reeds. Probeer asseblief 'n ander gebruikersnaam.",
Expand Down
8 changes: 1 addition & 7 deletions packages/rocketchat-i18n/i18n/ar.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1024,7 +1024,6 @@
"error-delete-protected-role": "لا يمكنك حذف دور محمية",
"error-department-not-found": "قسم غير موجود",
"error-direct-message-file-upload-not-allowed": "لا يسمح بمشاركة الملفات في الرسائل المباشرة",
"error-duplicate-channel-name": "توجد قناة باسم '%s'",
"error-edit-permissions-not-allowed": "أذونات التحرير غير مسموح بها",
"error-email-domain-blacklisted": "القائمة السوداء المجال البريد الإلكتروني",
"error-email-send-failed": "حدث خطأ أثناء محاولة إرسال رسالة إلكترونية: __message__",
Expand Down Expand Up @@ -1057,7 +1056,6 @@
"error-invalid-redirectUri": "redirectUri غير صالح",
"error-invalid-role": "دور غير صالح",
"error-invalid-room": "غرفة غير صالحة",
"error-invalid-room-name": "<strong>%s</strong> ليس اسما غرفة صحيح، <br/> استخدام حروف أو أرقام أو الواصلات والشرطات",
"error-invalid-room-type": "<strong>__type__</strong> ليس نوع الغرفة صالح.",
"error-invalid-settings": "إعدادات غير صحيحة المقدمة",
"error-invalid-subscription": "الاشتراك غير صالح",
Expand Down Expand Up @@ -2141,10 +2139,7 @@
"Retail": "التجزئة",
"Retention_setting_changed_successfully": "تم تغيير إعداد سياسة الاحتفاظ بنجاح",
"RetentionPolicy": "سياسة الإحتفاظ",
"RetentionPolicy_RoomWarning": "يتم تشذيب الرسائل الأقدم من٪ s هنا تلقائيًا",
"RetentionPolicy_RoomWarning_Unpinned": "يتم تشذيب الرسائل غير المثبتة الأقدم من٪ s تلقائيًا هنا",
"RetentionPolicy_RoomWarning_FilesOnly": "يتم تشذيب الملفات أقدم من٪ s هنا تلقائيًا (تبقى الرسائل سليمة)",
"RetentionPolicy_RoomWarning_UnpinnedFilesOnly": "يتم تشذيب الملفات غير المثبتة الأقدم من٪ s هنا تلقائيًا (تبقى الرسائل سليمة)",
"RetentionPolicy_RoomWarning_FilesOnly": "يتم تشذيب الملفات أقدم من %s هنا تلقائيًا (تبقى الرسائل سليمة)",
"RetentionPolicy_Description": "تلقائيا prunes الرسائل القديمة عبر مثيل Rocket.Chat الخاص بك.",
"RetentionPolicy_Enabled": "مُفعّل",
"RetentionPolicy_AppliesToChannels": "ينطبق على القنوات",
Expand Down Expand Up @@ -2685,7 +2680,6 @@
"UserDataDownload_EmailBody": "ملف البيانات الخاص بك جاهز الآن للتنزيل. انقر فوق <a href=\"__download_link__\">هنا</a>لتنزيله.",
"UserDataDownload_EmailSubject": "ملف البيانات الخاص بك جاهز للتنزيل",
"UserDataDownload_Requested": "تنزيل الملف المطلوب",
"UserDataDownload_Requested_Text": "سيتم إنشاء ملف البيانات الخاص بك. سيتم إرسال رابط لتنزيله إلى عنوان بريدك الإلكتروني عندما يكون جاهزًا.",
"UserDataDownload_RequestExisted_Text": "ملف البيانات الخاص بك يتم إنشاؤه بالفعل. سيتم إرسال رابط لتنزيله إلى عنوان بريدك الإلكتروني عندما يكون جاهزًا.",
"Username": "اسم المستخدم",
"Username_already_exist": "اسم المستخدم موجود بالفعل. الرجاء تجربة اسم مستخدم آخر.",
Expand Down
3 changes: 1 addition & 2 deletions packages/rocketchat-i18n/i18n/az.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@
"Continue": "Davam edin",
"Continuous_sound_notifications_for_new_livechat_room": "Yeni livechat otağı üçün davamlı səs bildirişləri",
"Conversation": "Söhbət",
"Conversation_closed": "Söhbət bağlandı: __miqama__.",
"Conversation_closed": "Söhbət bağlandı: __comment__.",
"Conversation_finished_message": "Söhbət sona çatdı",
"conversation_with_s": "%s ilə söhbət",
"Convert_Ascii_Emojis": "ASCII'yi Emoji'ye çevirmək",
Expand Down Expand Up @@ -2685,7 +2685,6 @@
"UserDataDownload_EmailBody": "Məlumat faylınız artıq yüklənməyə hazırdır. Yükləmək üçün <a href=\"__download_link__\">burada</a>vurun.",
"UserDataDownload_EmailSubject": "Sizin Data Faylınız Yükləməyə Hazırdır",
"UserDataDownload_Requested": "İstənilən faylı yükləyin",
"UserDataDownload_Requested_Text": "Məlumat faylınız yaranacaq. Hazır olduğunuzda onu yükləmək üçün bir link e-poçt ünvanınıza göndəriləcək.",
"UserDataDownload_RequestExisted_Text": "Məlumat faylınız artıq yaradılıb. Hazır olduğunuzda onu yükləmək üçün bir link e-poçt ünvanınıza göndəriləcək.",
"Username": "İstifadəçi adı",
"Username_already_exist": "İstifadəçi adı artıq mövcuddur. Başqa bir istifadəçi adı cəhd edin.",
Expand Down
2 changes: 1 addition & 1 deletion packages/rocketchat-i18n/i18n/bas-CM.i18n.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ }
{}
1 change: 0 additions & 1 deletion packages/rocketchat-i18n/i18n/be-BY.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -2700,7 +2700,6 @@
"UserDataDownload_EmailBody": "Файл дадзеных зараз гатовы да загрузцы. Націсніце <a href=\"__download_link__\">тут</a>, каб загрузіць яго.",
"UserDataDownload_EmailSubject": "Ваш файл дадзеных Гатовы да загрузцы",
"UserDataDownload_Requested": "Запытаны Загрузіць файл",
"UserDataDownload_Requested_Text": "Файл дадзеных будзе генеравацца. Спасылка на запампоўку яго будзе адпраўлены на ваш адрас электроннай пошты, калі будзеце гатовыя.",
"UserDataDownload_RequestExisted_Text": "Файл дадзеных ўжо генеруецца. Спасылка на запампоўку яго будзе адпраўлены на ваш адрас электроннай пошты, калі будзеце гатовыя.",
"Username": "імя карыстальніка",
"Username_already_exist": "Імя карыстальніка ўжо існуе. Калі ласка, паспрабуйце іншую назву.",
Expand Down
3 changes: 0 additions & 3 deletions packages/rocketchat-i18n/i18n/bg.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1321,7 +1321,6 @@
"Importer_CSV_Information": "CSV вносителят изисква специален формат, прочетете документацията за това как да структурирате файла с цип:",
"Importer_done": "Импортирането е завършено!",
"Importer_finishing": "Завършване на импортирането.",
"Importer_From_Description": "Импортира данните от Rocket.Chat.",
"Importer_HipChatEnterprise_BetaWarning": "Имайте предвид, че този внос все още е в процес на разработка, моля, отчетете всички грешки, които възникват в GitHub:",
"Importer_HipChatEnterprise_Information": "Каченият файл трябва да е декриптиран tar.gz, моля прочетете документацията за допълнителна информация:",
"Importer_import_cancelled": "Импортирането бе отменено.",
Expand Down Expand Up @@ -2685,7 +2684,6 @@
"UserDataDownload_EmailBody": "Файлът с данни вече е готов за изтегляне. Кликнете върху <a href=\"__download_link__\">тук</a>, за да го изтеглите.",
"UserDataDownload_EmailSubject": "Вашият файл с данни е готов за изтегляне",
"UserDataDownload_Requested": "Изтегляне на файла",
"UserDataDownload_Requested_Text": "Вашият файл с данни ще бъде генериран. Връзка за изтеглянето ще бъде изпратена на вашия имейл адрес, когато сте готови.",
"UserDataDownload_RequestExisted_Text": "Файлът с данни вече се генерира. Връзка за изтеглянето ще бъде изпратена на вашия имейл адрес, когато сте готови.",
"Username": "Потребителско име",
"Username_already_exist": "Потребителското име вече съществува. Моля, опитайте с друго потребителско име.",
Expand Down Expand Up @@ -2816,7 +2814,6 @@
"You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM": "Можете да използвате webhooks за лесно интегриране на livechat с вашия CRM.",
"You_cant_leave_a_livechat_room_Please_use_the_close_button": "Не можеш да оставиш стаята на живо. Моля, използвайте бутона за затваряне.",
"You_have_been_muted": "Бяхте заглушен и не можете да говорите в тази стая",
"You_have_n_codes_remaining": "Имате останали кодове от номер.",
"You_have_not_verified_your_email": "Не сте потвърдили имейла си.",
"You_have_successfully_unsubscribed": "Успешно се отписахте от нашия списък за мероприятия.",
"You_have_to_set_an_API_token_first_in_order_to_use_the_integration": "Първо трябва да зададете първо означение за приложния програмен интерфейс (API), за да използвате интеграцията.",
Expand Down
1 change: 0 additions & 1 deletion packages/rocketchat-i18n/i18n/bs.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -2683,7 +2683,6 @@
"UserDataDownload_EmailBody": "Datoteka podataka sada je spremna za preuzimanje. Kliknite <a href=\"__download_link__\">ovdje</a>da biste je preuzeli.",
"UserDataDownload_EmailSubject": "Vaša datoteka podataka je spremna za preuzimanje",
"UserDataDownload_Requested": "Traženje tražene datoteke",
"UserDataDownload_Requested_Text": "Vaša će datoteka biti generirana. Veza za preuzimanje bit će poslana na vašu e-adresu kada bude spremna.",
"UserDataDownload_RequestExisted_Text": "Vaša datoteka podataka već se generira. Veza za preuzimanje bit će poslana na vašu e-adresu kada bude spremna.",
"Username": "Korisničko ime",
"Username_already_exist": "Korisničko ime već postoji. Pokušajte s drugim korisničkim imenom.",
Expand Down
12 changes: 5 additions & 7 deletions packages/rocketchat-i18n/i18n/ca.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1196,7 +1196,6 @@
"error-delete-protected-role": "No es pot eliminar un rol protegit",
"error-department-not-found": "Departament no trobat",
"error-direct-message-file-upload-not-allowed": "Compartició d'arxius no permesa als missatges directes",
"error-duplicate-channel-name": "Ja hi ha un canal amb el nom '%s' ",
"error-edit-permissions-not-allowed": "No es permet editar permisos",
"error-email-domain-blacklisted": "El domini de l'adreça electrònica és a la llista negra",
"error-email-send-failed": "Error en l'intent d'enviament de correu-e: __message__",
Expand Down Expand Up @@ -2021,7 +2020,7 @@
"New_Trigger": "Nou disparador",
"New_version_available_(s)": "Nova versió disponible (%s)",
"New_videocall_request": "Nova petició de vídeo trucada",
"New_visitor_navigation": "Nova navegació: __història__",
"New_visitor_navigation": "Nova navegació: __history__",
"Newer_than": "Més recent que",
"Newer_than_may_not_exceed_Older_than": "\"Més recent que\" no pot excedir \"Més antic que\"",
"No_available_agents_to_transfer": "No hi ha agents disponibles per a transferir",
Expand Down Expand Up @@ -2836,15 +2835,15 @@
"User_Presence": "Presència dels usuaris",
"User_removed": "Usuari eliminat",
"User_removed_by": "Usuari <em>__user_removed__</em> eliminat per <em>__user_by__</em>.",
"User_sent_a_message_on_channel": "<strong>__usuari__</strong> ha enviat un missatge a <strong>__channel__</strong>",
"User_sent_a_message_to_you": "<strong>__usuari__</strong> us ha enviat un missatge",
"User_sent_a_message_on_channel": "<strong>__username__</strong> ha enviat un missatge a <strong>__channel__</strong>",
"User_sent_a_message_to_you": "<strong>__username__</strong> us ha enviat un missatge",
"user_sent_an_attachment": "__user__ ha enviat un fitxer adjunt",
"User_Settings": "Opcions d'usuari",
"User_unmuted_by": "L'usuari <em>__user_by__</em> ha tornat la veu a <em>__user_unmuted__</em>.",
"User_unmuted_in_room": "L'usuari torna a tenir veu a la sala",
"User_updated_successfully": "L'usuari s'ha actualitzat correctament",
"User_uploaded_a_file_on_channel": "<strong>__usuari__</strong> ha penjat un fitxer a <strong>__channel__</strong>",
"User_uploaded_a_file_to_you": "<strong>__usuari__</strong> us ha enviat un fitxer",
"User_uploaded_a_file_on_channel": "<strong>__username__</strong> ha penjat un fitxer a <strong>__channel__</strong>",
"User_uploaded_a_file_to_you": "<strong>__username__</strong> us ha enviat un fitxer",
"User_uploaded_file": "Ha pujat un arxiu",
"User_uploaded_image": "Ha pujat una imatge",
"UserData_EnableDownload": "Activa la descàrrega de dades d'usuari",
Expand All @@ -2857,7 +2856,6 @@
"UserDataDownload_EmailBody": "El fitxer de dades ja està preparat per baixar. Feu clic a <a href=\"__download_link__\">aquí</a>per baixar-lo.",
"UserDataDownload_EmailSubject": "El vostre fitxer de dades està preparat per baixar",
"UserDataDownload_Requested": "Descarregar el fitxer sol·licitat",
"UserDataDownload_Requested_Text": "Es generarà el vostre fitxer de dades. Un enllaç de descàrrega s'enviarà a la vostra adreça de correu electrònic quan estigui llest. Hi ha <strong>operacions pendents</strong> en cua d'execució abans que la vostra.",
"UserDataDownload_RequestExisted_Text": "El vostre fitxer de dades ja s'està generant. Un enllaçde descàrrega s'enviarà a la vostra adreça de correu electrònic quan estigui llest. Hi ha <strong>operacions pendents</strong> en cua d'execució abans que la vostra.",
"Username": "Nom d'usuari",
"Username_already_exist": "El nom d'usuari ja existeix. Proveu un altre nom d'usuari.",
Expand Down
Loading

0 comments on commit 1e608d0

Please sign in to comment.