Нихао, друзья!
Уже пару дней как в вишлисты HEXSTORM добавляются сотни китайских игроков. Вероятно, игра засветилась где-то в китайских медиа. Я же в срочном порядке решил делать локализацию демки на упрощенный китайский. В планах были немецкий и французский, но раз такое дело...
Заняло всё это дело пару часов, и тут хотелось бы рассказать про то, как устроена локализация у меня в проекте.
Когда я только начинал вайбкодить, я писал тексты прямо в коде. «ПОБЕДА», «МЕНЮ» и т.п. Это удобно ровно до того дня, когда потребовался английский.
И вот ты сидишь, а текст игры размазан тонким слоем по семидесяти файлам.
Чтобы это исправить я применил подход, который называется i18n. В таком случае весь текст выносится из кода в словарь и подставляется по ключу в зависимости от выбранного языка.
Идея простая: ни одна строка не знает, на каком она языке. В коде я пишу не «МЕНЮ», а задаю ключ ui.menu, а словарь сам достаёт нужный вариант из четырёх языков.
С числами хитрее. «Уровень 5» по-русски это одно, а по-китайски слова стоят в другом порядке, и просто склеить строку с цифрой нельзя. Поэтому там участвуют маленькие функции: я лишь даю им число, а каждый язык сам решит, куда его поставить и в каком падеже. Например: «1 слеза / 2 слезы / 5 слёз» считается отдельно.
Звучит как занудная инженерия, но правило всегда такое: вытаскивай текст из кода с первого дня. Потому что переделывать пятьсот захардкоженных «ПОБЕДА» в ключи - отдельный круг ада.
А чтобы сделать так же у себя просто напишите в промпт: «хочу делать локализацию с помощью i18n» и агент сам все поймет и построит правильный словарь.
Ставьте 🔥 если было полезно.
Уже пару дней как в вишлисты HEXSTORM добавляются сотни китайских игроков. Вероятно, игра засветилась где-то в китайских медиа. Я же в срочном порядке решил делать локализацию демки на упрощенный китайский. В планах были немецкий и французский, но раз такое дело...
Заняло всё это дело пару часов, и тут хотелось бы рассказать про то, как устроена локализация у меня в проекте.
Когда я только начинал вайбкодить, я писал тексты прямо в коде. «ПОБЕДА», «МЕНЮ» и т.п. Это удобно ровно до того дня, когда потребовался английский.
И вот ты сидишь, а текст игры размазан тонким слоем по семидесяти файлам.
Чтобы это исправить я применил подход, который называется i18n. В таком случае весь текст выносится из кода в словарь и подставляется по ключу в зависимости от выбранного языка.
Идея простая: ни одна строка не знает, на каком она языке. В коде я пишу не «МЕНЮ», а задаю ключ ui.menu, а словарь сам достаёт нужный вариант из четырёх языков.
С числами хитрее. «Уровень 5» по-русски это одно, а по-китайски слова стоят в другом порядке, и просто склеить строку с цифрой нельзя. Поэтому там участвуют маленькие функции: я лишь даю им число, а каждый язык сам решит, куда его поставить и в каком падеже. Например: «1 слеза / 2 слезы / 5 слёз» считается отдельно.
Звучит как занудная инженерия, но правило всегда такое: вытаскивай текст из кода с первого дня. Потому что переделывать пятьсот захардкоженных «ПОБЕДА» в ключи - отдельный круг ада.
А чтобы сделать так же у себя просто напишите в промпт: «хочу делать локализацию с помощью i18n» и агент сам все поймет и построит правильный словарь.
Ставьте 🔥 если было полезно.