Я не експерт, але ось деякі основні речі:
Переконайтеся, що ваші струни можуть обробляти більше, ніж просто ASCII
Вам знадобляться кілька символів spécîål, які не вписуються в ASCII, і ваш клас рядків краще не перейматися ними. UTF-8 - це звичайне кодування, оскільки воно є просторовим. Що б ви не робили, випробовуйте рано та випрасуйте перегини.
Це дійсно гарна ідея використовувати фактичний клас струн, а не тільки char *
скрізь, або ви будете в світі болю.
Не забудьте свої шрифти. Переконайтесь, що всі використовувані шрифти містять потрібні символи.
Витягніть рядки з коду
Це найважливіший. Переконайтеся, що всі текстові рядки зберігаються поза кодом у якомусь файлі даних, який ви можете замінити. Налаштування трубопроводу для цього може бути справжнім завданням, але заощадить вас за тону часу. Вам потрібен простий API, щоб будь-який раз, коли вам потрібна рядок у коді, це було так просто, як:
String text = Locale::getString("some unique identifier");
Не об'єднуйте і не будуйте рядки в коді
Важливо не робити припущень щодо того, як фрагмент тексту будується з менших слів. Навіть щось таке нешкідливе, як:
String currency = Locale::getCurrencyString() + money.toString();
// creates $123
це проблема, оскільки інші мови можуть розміщувати позначку валюти після номера. Замість цього використовуйте рядки формату, які самі локалізовані:
String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());
Таким чином, локалізатори можуть переставляти слова в рядку формату.
Мінімізуйте кількість тексту, який з’являється у мистецтві, особливо у відео
Розшукувати художні активи - справа. Вам, мабуть, доведеться зробити це хоча б трохи для деяких елементів інтерфейсу, але це зайві клопоти. Розгортання FMV - це величезний біль, тому що тепер вам доведеться створювати та зберігати дублікати копій FMV.
Ретельно перевіряйте різними мовами
У більшості баз кодів занадто просто сказати printf("Hi there");
або loadTexture("someTexture");
забути, що їм потрібно пройти ваш API локалізації. Хтось забуде, і ви закінчите щось, що є правильним у вашій основній мові, але неправильно в інших. Єдиний спосіб знайти це - пройти тестування тестерів на не первинних мовах.
Зробіть очевидним відсутній локалізований текст
Зазвичай ви перекладаєте текст наприкінці циклу, тому протягом більшої частини часу даних для деяких мов просто не буде. Це добре, оскільки дозволяє вам повторювати вміст без постійного повторного перекладу. Мінус - це означає, що вам легко пропустити речі і забути перекласти деякі речі.
Одне дешеве, що ви можете зробити - це зробити так, щоб текст, що пропускається, з'явився дуже очевидно, як "!!! ПОТРІБНИЙ ПОТРІБНИЙ ПОТРІБ ІДЕНТА # блах бла !!!" у грі, коли її немає.
Створіть свій інтерфейс користувача на найгіршій мові
У різних мовах, як правило, є довші або короткіші слова. Користувацький інтерфейс, який виглядає красиво англійською мовою, може містити текст, який проходить за його межами, отримує обрізання або неправильно загортається довшою мовою. Вам доведеться внести зміни в інтерфейс користувача, щоб вони відповідали найгіршому мові (або розщедрити його, але це, мабуть, не те, що ви хочете робити.)
Прикро, що англійська мова часто є найкоротшою мовою з тих, що зазвичай локалізуються, тому ваші дизайнери, ймовірно, ненавмисно розробляють найкращий випадок. Змусьте їх використовувати надто довгий текст для своїх заповнювачів під час проектування. Припустимо, будь-який фрагмент тексту може бути приблизно на 30% довший, ніж англійською. Google Translate може бути корисним для отримання приблизного фрагмента тексту для заповнювача.
Бюджетний час на переклад
Переклад тексту зазвичай трапляється пізно, коли команда втомилася і насправді не хвилює. Тим не менш, ви отримаєте багато помилок, коли це станеться. Слова пройдуть за межами кордонів, перекладачі будуть робити помилки і т. Д. Для того, щоб погіршити ситуацію, час перегляду тексту може бути довгим, якщо вам доведеться надсилати текст людям за кордон і чекати їх змін. Виділіть час на цю роботу.