Интернационализация
Сделайте ваш пользовательский интерфейс переводимым на множество различных языков.
Если вы хотите внести свой вклад в перевод Elgg, ознакомьтесь с руководством для участников the contributors“.
Язык по умолчанию — en для английского. Elgg использует систему отката для языков:
Язык пользователя
Язык сайта
Английский
Обзор
Переводы хранятся в файлах 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'));