Локализация плагинов на ваш язык
Все плагины созданы на английском языке по умолчанию. Если вы хотите, чтобы они были доступны на вашем языке, вы можете добавить к ним переводы.
Перевод разделов config.json
Сначала вы можете перевести файл config.json ↗. Для этого откройте его и найдите все строки на английском языке. Обычно это узлы name ↗, variations.description ↗ и variations.buttons.text ↗ (название параметров) объекта конфигурации.
Добавьте новые узлы с именем ключа и Региональными настройками, равными объекту, который будет иметь локаль языка в качестве ключа и перевод в качестве значения. Например, для ключа name объект локализации будет выглядеть так:
"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 ↗ и pluginCode.js и создайте их список. Затем создайте папку translations в каталоге плагина, чтобы структура выглядела следующим образом:
.. [translations] config.json index.html pluginCode.js
Создайте языковые файлы .json для каждого языка, для которого вы хотите добавить переводы, с четырехбуквенным кодом языка для его имени (например, de-DE.json). Эти файлы будут содержать объекты со словами и фразами исходного (английского) языка в качестве ключей и переводами на выбранный язык в качестве значений. Вот пример перевода с немецкого:
{
"Language": "Sprache",
"Highlight": "Hervorheben",
"Style": "Stil",
}
Начиная с версии 7.2, вы можете добавить файл langs.json в папку translations. Он содержит имена файлов с переводами на определенный язык в формате массива:
[
"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
Теперь вы можете заменить строки в файлах их переведенными значениями.
Применение переводов к плагину
Чтобы применить переводы, вам нужно будет добавить уникальные идентификаторы к каждому элементу, который имеет строковое значение, которое вы хотите локализовать. Например, вы хотите локализовать кнопку «Создать» в этой части кода:
<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 файле), чтобы они работали корректно.
Теперь, когда редакторы запущены, текущий язык интерфейса будет использоваться для определения того, имеет ли плагин такой же перевод локали. Если это так, язык плагина будет изменен в соответствии с языком интерфейса редактора и будет применен перевод.








