User Manual

Локализация

На этой странице описывается, как локализовать ваши текстовые элементы на разные языки.

Файлы локализации

Для каждого языка, который вы хотите поддерживать, вам нужно добавить JSON-ресурс, содержащий переведенные фразы для этого языка. PlayCanvas поддерживает определенный формат для JSON-ресурса. Откройте настройки редактора, и в разделе ЛОКАЛИЗАЦИЯ нажмите Создать новый ресурс, чтобы создать новый JSON-ресурс в ожидаемом формате.

JSON-ресурс выглядит следующим образом:

{
    "header": {
        "version": 1
    },
    "data": [
        {
            "info": {
                "locale": "ru-RU"
            },
            "messages": {
                "key": "Перевод одного ключа",
                "key plural": [
                    "Перевод одного ключа",
                    "Перевод для {number} ключей"
                ]
            }
        }
    ]
}

Вы можете указать другой язык в разделе info JSON-файла. Раздел messages содержит пары ключ-значение для каждой локализованной фразы. Ключ является идентификатором этой фразы, а текст - переведенным текстом для этого ключа.

PlayCanvas также поддерживает множественные формы для каждого языка. Чтобы указать множественные формы для каждой фразы, вам нужно передать массив строк для каждой множественной формы вместо одной строки. У каждого языка есть разные множественные формы, которые вы можете найти здесь. Каждый элемент массива соответствует множественной форме для этого языка. Например, для английского:

"key plural": [
    "One item", // plural form ONE
    "Not one" // plural form OTHER
]

For Arabic:

```javascript
"key plural": [
    "Zero items", // plural form ZERO
    "One item", // plural form ONE
    "Two items", // plural form TWO
    "Few items", // plural form FEW
    "Many items", // plural form MANY
    "Rest", // plural form OTHER
]

Локализация чисел

Локализация чисел Разные локали имеют различные правила форматирования чисел. Например, для английского языка (Великобритания и США) число 1000000 будет отформатировано как 1,000,000, а для нидерландского будет использоваться десятичный разделитель 1.000.000.

JavaScript предоставляет встроенную функцию для форматирования чисел на основе кода локали, Number.protoype.toLocaleString().

Пример использования:

var numberOfItems = 1000;
var currentLocale = this.app.i18n.locale;
var localeNumberString = numberOfItems.toLocaleString(currentLocale);

console.log(localeNumberString);
// expected output assuming currentLocale is en-US: "1,000"

Локализованные шрифты

Часто бывает необходимо использовать разные шрифты для разных языков. Чтобы задать другой шрифт для конкретного языка, выберите основной ресурс шрифта, используемый для вашего текстового элемента, и внизу атрибутов ресурса шрифта вы найдете раздел "Локализация" для этого ресурса шрифта. Введите желаемую локаль и назначьте новый ресурс шрифта для этой локали.

При выполнении приложения при переключении на другую локаль будет загружен ресурс шрифта, определенный для этой локали.

Localized Fonts Inspector

Примечания по языкам

Некоторые языки требуют специфических рабочих процессов или особого внимания, которые перечислены ниже.

Тайский язык

Для корректной работы переноса слов в текстовых элементах пользовательского интерфейса с тайским текстом переводчики должны добавлять нулевые символы ширины (Unicode U+200B) между словами.

В тайском языке нет пробелов между словами, и одна и та же последовательность глифов может разбиваться на различные комбинации слов в зависимости от контекста предложения.

Точное разделение тайского текста на слова с использованием вычислительных методов до сих пор является нерешенной проблемой и обычно выполняется с использованием словарного подхода, который может быть затратным во время выполнения.

На сайте thai-language.com также есть отдельный инструмент для добавления нулевых символов ширины между словами с использованием словарного подхода, если у вас есть существующий текст.

Языки с право на лево

Для поддержки языков с права налево необходимы дополнительные скрипты, которые можно найти в этом примере проекта.

В примере проекта есть папка "Rtl Support", которую необходимо скопировать и вставить в ваш проект.

В папке находится скрипт с именем "RtlElement", который следует добавить к любой сущности с компонентом текстового элемента, используемому для отображения текста справа налево.

Движок

Для извлечения текста из ключа в скрипте используйте следующие API:

Для полного справочника API движка по локализации смотрите эту страницу.

This site is translated by the community. If you want to get involved visit this page