Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check i18n file for missing variables #18762

Merged
merged 10 commits into from
Sep 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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