Перейти до вмісту

ключ i18n диф

Порівняйте два файли локалізації JSON і перелічіть ключі перекладу, яких немає в кожному.

Введення
JSON B (перекладений файл)
Вихід

ключ i18n диф

Вставте свій базовий файл локалізації як JSON A, а перекладений файл — як JSON B, і цей інструмент зведе обидва ключові шляхи до крапкової нотації — «nav.home», «errors.notFound» — а потім повідомить, де саме вони розходяться. Він створений для того моменту, коли файл перекладу відстає від вихідного коду: новий екран надсилає кілька рядків, хтось безпосередньо редагує англійську копію або локаль була машинно перекладена кілька місяців тому і ніколи не поверталася.

Виберіть, про що повідомити: відсутні ключі в B (додано до вихідного коду, але ніколи не перекладено), відсутні ключі в A (залишки рядків функції, що залишилася після видалення), або обидва одночасно. Четвертий режим, «неперекладений», перераховує ключі, які існують в обох файлах з ідентичними значеннями байтів — сильний сигнал, що рядок було скопійовано, а не перекладено, оскільки справжній переклад збігається з джерелом лише випадково. Вкладені об’єкти обходяться рекурсивно незалежно від глибини файлу; масиви порівнюються як цілі значення, а не індексуються, оскільки справжні файли локалізації вкладаються в об’єкти та розглядають масиви як непрозорі дані (форми множини, упорядковані списки), а не через пронумеровані ключі.

Вихідні дані надходять у вигляді звичайного списку, по одному шляху на рядок, або у вигляді JSON, готового для введення в сценарій або перевірку CI, яка не проходить збірку, коли переклади дрейфують. Підрахунок над результатом завжди показує повну картину, незалежно від того, який режим звіту вибрано — скільки ключів у A, скільки в B і скільки їх не вистачає з обох боків — так що ви можете вловити дрейф одним поглядом, перш ніж прочитати деталі. Недійсний JSON у будь-якому файлі повідомляється за назвою, цитуючи власне повідомлення синтаксичного аналізатора, тож ви одразу знаєте, який файл виправити.

Усе працює локально у вашому браузері: обидва файли аналізуються та порівнюються на вашому пристрої та ніколи нікуди не завантажуються, що важливо, оскільки файли локалізації часто містять неопубліковані назви функцій і внутрішню термінологію перед запуском. Використовуйте його, щоб переглянути запит перекладача на отримання, перевірити локаль перед випуском або знайти кожен рядок, який рефактор мовчки скинув.

FAQ

Що вважається «ключем» для порівняння?
Кожне листкове значення в JSON, адресоване повним крапковим шляхом — вкладений об’єкт, наприклад {"nav":{"home":"Home"}}, створює ключ "nav.home". Масиви порівнюються як цілі значення, а не розбиті на індексовані ключі.
Що насправді виявляє режим «неперекладений»?
Ключі, які існують в обох файлах з ідентичним значенням. Він позначає ймовірно неперекладені рядки, але коротке значення, яке законно однакове в обох мовах (назва бренду, номер), також відображатиметься — сприймайте його як потенційну можливість для перевірки, а не як гарантований промах.
Що станеться, якщо ключ містить об’єкт в одному файлі та звичайний рядок в іншому?
Кожна сторона вирівнюється незалежно, так що невідповідність виявляється природним чином: власні вкладені ключі об’єкта виглядають як відсутні на стороні рядка, а ключ рядка виглядає як відсутній на стороні об’єкта.
Чи є обмеження на розмір файлу?
Немає фіксованого ліміту понад 10 Мб виводу, який поділяє більшість інструментів. Обробка виконується на вашому пристрої, тому навіть великі каталоги з тисячами ключів порівнюються за мілісекунди.
Чи завантажено кудись мої файли локалізації?
Ні. І JSON A, і JSON B аналізуються та порівнюються повністю у вашому браузері — жоден файл не залишає ваш пристрій.