Интернационализация

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

Если вы хотите внести свой вклад в перевод Elgg, ознакомьтесь с руководством для участников the contributors“.

Язык по умолчанию — en для английского. Elgg использует систему отката для языков:

  1. Язык пользователя

  2. Язык сайта

  3. Английский

Обзор

Переводы хранятся в файлах PHP в директории /languages вашего плагина. Каждый файл соответствует языку. Формат: /languages/{language-code}.php, где {language-code} — это короткий код языка ISO 639-1. Например:

<?php // mod/example/languages/en.php

return [
        'example:text' => 'Some example text',
];

Чтобы переопределить существующий перевод, включите его в языковой файл вашего плагина и убедитесь, что ваш плагин расположен позже на странице Администрирование > Плагины:

<?php // mod/better_example/languages/en.php

return [
        'example:text' => 'Some better text!',
];

Примечание

Если вы не переопределяете языковые строки ядра или другого плагина, хорошей практикой является начало языковых ключей с имени вашего плагина. Например: yourplugin:success, yourplugin:title и т.д. Это помогает избежать конфликтов с другими языковыми ключами.

API на стороне сервера

elgg_echo($key, $args, $language)

Выводит перевод ключа на текущем языке.

Пример:

echo elgg_echo('example:text');

Также поддерживается замена переменных с использованием синтаксиса vsprintf:

// 'welcome' => 'Welcome to %s, %s!'
echo elgg_echo('welcome', [
        elgg_get_config('sitename'),
        elgg_get_logged_in_user_entity()->getDisplayName(),
]);

Чтобы принудительно указать, какой язык должен использоваться для перевода, установите третий параметр:

echo elgg_echo('welcome', [], $user->getLanguage());

Чтобы сначала проверить, может ли elgg_echo() найти перевод:

$key = 'key:that:might:not:exist';
if (!elgg_language_key_exists($key)) {
        $key = 'fallback:key';
}

echo elgg_echo($key);

Примечание

Некоторые API позволяют создавать переводы для новых ключей. Переводчики всегда должны включать перевод на английский в качестве отката. Это делает elgg_language_key_exists($key) надёжным способом предсказать, будет ли успешным elgg_echo($key).

JavaScript API

i18n.echo(key, args)

Эта функция аналогична elgg_echo в PHP.

Переводы на стороне клиента загружаются асинхронно. Убедитесь, что переводы доступны, требуя модуль «elgg/i18n»:

import i18n from 'elgg/i18n';

alert(i18n.echo('my_key'));