Проблема перевода файлов локализации через ChatGPT
Если вы когда-либо пробовали перевести файл локализации формата JSON при помощи ChatGPT, то наверняка сталкивались со следующей ситуацией:
Вы вставляете исходный текст файла примерно такого вида:
{
"welcome": "Добро пожаловать обратно, {name}!",
"messages": "У вас есть {count} новых сообщений",
"errors": {
"not_found": "Страница не найдена",
"rate_limit": "Подождите %d секунд"
}
}
И получаете результат вроде следующего:
{
"welcome": "Bienvenue de nouveau, nom!",
"messages": "Vous avez nombre nouveaux messages",
"errors": {
"non_trouvé": "Page non trouvée",
"limite_taux": "Attends secondes"
}
}
Что именно пошло не так?
Что сломалось после перевода
- Плейсхолдеры (
{name},%d) были переведены или удалены.{name}превратился вnom, что вызовет ошибку выполнения приложения.%dисчез полностью.
- Ключам присвоены новые значения. Например, ключ
not_foundсталnon_trouvé. Это приведет к тому, что код перестанет находить нужные строки.
Таким образом, вместо быстрого перевода вам придется потратить значительное время на исправление ошибок вручную.
Почему это происходит
ChatGPT является языковой моделью, предназначенной для перевода текста. Он не понимает, что некоторые элементы внутри фигурных скобок являются переменными, которые нельзя переводить, а ключи напрямую используются вашим приложением и их изменение недопустимо.
Даже если попытаться использовать подсказки («не переводи ничего внутри фигурных скобок»), результаты остаются нестабильными. Сложные вложенные структуры данных, массивы и различные форматы плейсхолдеров постоянно вызывают проблемы у модели.
Когда модель ошибается, она делает это молча – ошибки обнаруживаются только тогда, когда приложение начинает работать некорректно.
Решение проблемы
Чтобы решить эту проблему, я создал специализированный инструмент под названием LocalizeJSON. Этот инструмент выполняет одну задачу качественно – он переводит файлы локализации JSON, гарантируя следующее:
- Все ключи сохраняются неизменными.
- Плейсхолдеры любого типа (
%d,{name}, etc.) остаются нетронутыми. - Корректное обращение с вложенными объектами и массивами.
- Результат всегда представляет собой валидный JSON-файл, который можно сразу же интегрировать в проект.
Просто загрузите ваш файл, выберите язык перевода и получите готовый результат за несколько секунд. Инструмент бесплатный и не требует регистрации.