Локализация плагинов на ваш язык

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

Перевод разделов config.json

Сначала вы можете перевести файл config.json. Для этого откройте его и найдите все строки на английском языке. Обычно это узлы имя, variations.description и variations.buttons.text объекта конфигурации.

Добавьте новые узлы с именем ключа и локалью, равными объекту, который будет иметь локаль языка в качестве ключа и перевод в качестве значения. Например, для ключа имени объект локализации будет выглядеть так:

"name": "Highlight code",
"nameLocale": {
    "de": "Code hervorheben",
    "es": "Resaltar el código",
    "fr": "Code en surbrillance",
    "ru": "Подсветка кода"
}

Полные переводы в config.json для плагина подсветки кода будут выглядеть следующим образом:

{
    "name": "Highlight code",
    "nameLocale": {
        "de": "Code hervorheben",
        "es": "Resaltar el código",
        "fr": "Code en surbrillance",
        "ru": "Подсветка кода"
    },
    ...,
    "variations": [
        {
            "description": "Highlight code",
            "descriptionLocale": {
                "de": "Code hervorheben",
                "es": "Resaltar el código",
                "fr": "Code en surbrillance",
                "ru": "Подсветка кода"
            },
            ...,
            "buttons": [
                {
                    "text": "Cancel",
                    "textLocale": {
                        "de": "Abbrechen",
                        "es": "Cancelar",
                        "fr": "Annuler",
                        "ru": "Отмена"
                    },
                    ...
                }
            ],
            ...
        }
    ]
}

Локализация файлов index.html и кода плагина

Найдите все строки, которые вы хотите локализовать, в файлах index.html и pluginCode.js и создайте список. Затем создайте папку translations в плагине каталога, чтобы структура выглядела так:

..
[translations]
config.json
index.html
pluginCode.js

Создайте языковые файлы .json для каждого языка, для которого вы хотите добавить переводы, с четырехбуквенным кодом языка для его названия (например, de-DE.json). Эти файлы будут содержать объекты со словами и фразами исходного (английского) языка в качестве ключей и переводами на выбранный язык в качестве значений. Вот пример перевода с немецкого:

{
    "Language": "Sprache",
    "Highlight": "Hervorheben",
    "Style": "Stil",
}

Начиная с версии 7.2 вы можете добавить файл langs.json в папку с переводами. Он содержит имена файлов с переводами на конкретный язык в формате массива:

[
    "cs-CZ",
    "de-DE",
    "es-ES",
    "fr-FR",
    "ru-RU"
]

Сначала будет запрошен файл langs.json, и будет выполнен поиск полного совпадения языка и имени файла. Если совпадений не найдено, проверяются первые два символа до знака «-». Если в файле langs.json нет нужного имени файла, плагин будет работать на английском языке. Если файла langs.json нет или есть проблемы при его разборе, то переводы будут работать по старой схеме перевода.

После добавления всех файлов локализации файловая структура плагина будет выглядеть так:

..
[translations]
    de-DE.json
    es-ES.json
    fr-FR.json
    langs.json
    ru-RU.json
config.json
index.html
pluginCode.js

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

Применение переводов к плагину

Чтобы применить переводы, вам нужно будет добавить уникальные идентификаторы к каждому элементу, который имеет строковое значение, которое вы хотите локализовать. Например, вы хотите локализовать кнопку «New» в этой части кода:

<button>New</button>

Добавьте к нему атрибут id, чтобы он выглядел так:

<button id="button_new">New</button>

После этого добавьте функцию window.Asc.plugin.onTranslate в файл pluginCode.js:

window.Asc.plugin.onTranslate = function()
    {
        var label = document.getElementById("button_new");
        if (label)
            label.innerHTML = window.Asc.plugin.tr("New");
    }

Функция window.Asc.plugin.onTranslate будет вызываться сразу после запуска плагина и позже в случае изменения языка плагина.

Если вам нужно локализовать более одного слова/фразы, функция window.Asc.plugin.onTranslate может иметь следующий вид:

window.Asc.plugin.onTranslate = function()
    {
        document.getElementById("button_delete").innerHTML = window.Asc.plugin.tr("Delete");
        document.getElementById("button_new").innerHTML    = window.Asc.plugin.tr("New");
        document.getElementById("button_rename").innerHTML = window.Asc.plugin.tr("Rename");
        document.getElementById("button_run").innerHTML    = window.Asc.plugin.tr("Run");
    }

Где каждая строка будет представлять локализованный элемент, доступ к которому осуществляется с использованием соответствующего идентификатора

Обратите внимание, что в переводе используется метод .innerHTML, поэтому он может содержать не только слова и фразы, но и некоторые элементы HTML (теги, ссылки и т. д.). Не забывайте экранировать любые кавычки в переводе (как и в любом .json файл), чтобы они работали корректно.
Теперь, когда редакторы запущены, текущий язык интерфейса будет использоваться для определения того, имеет ли плагин такой же перевод локали. Если это так, язык плагина будет изменен в соответствии с языком интерфейса редактора и будет применен перевод.