Вернуться назад Распечатать

Как перевести плагины

Перевод плагинов и шаблонов Osclass. i18n является аббревиатурой internationalization. Вы можете получить дополнительную информацию из Википедии. OSClass использует библиотеки GNU Gettext.

Для того, чтобы переводимые строки выводились в приложении, необходимо обернуть исходную строку:

($text) — ищет версию для перевода $text и возвращает результат, а именно:(«Hello») ; _e($text) — ищет переведенную версию $text и выводит результат на экран

(same as echo __($text))
_e("Hello") ;

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

__($text, $domain) и _e($text, $domain).  Переменная $domain будет выводить название плагина или темы. В случае основным шаблоном modern, он будет выглядеть так: __("Hello", "modern") and _e("Hello", "modern").

Если вы хотите добавить переменные в строки, следующий код не будет работать:

__e("Hello $name", "modern") ;

Строка для перевода, взята из источников, так что в переводе увидите: Hello $name. Тем не менее, _e будет вызван с аргументом, как Hello Juan и Gettext не найдет подходящий перевод и будет возвращать аргумент: Hello Juan. Решение заключается в использовании Printf. Вот правильное решение:

printf(__("Hello %s", "modern"), $name) ;

Практические советы

Целые фразы: в большинстве языков порядок слов отличается. Разделитель в строках: не включают в себя целые страницы текста в одной строке. Используйте sprintf и printf:

sprintf(__('Replace %s with %s', 'modern'), $a, $b) ;

или

__('Replace ') . $a . __(' with ') . $b ;

Создание файлов .PO

Это файл, который отвечает за перевод строк. Путей создания POT файла множество, мы используем для редактирования и создания программу POedit. Эта статья объясняет, как создать .PO файл. После окончания перевода, вы должны поместить в нужное место файл .mo:

Темы: {theme folder}/languages/{locale}/theme.mo Плагины: {plugin folder}/languages/{locale}/messages.mo

{locale} используется ISO код языков, а именно: ru_RU, en_US, es_ES, de_DE, fr_FR, es_AR и т.д.

Напоследок, если вы хотите заменить флэш-сообщения, вы должны скопировать файл изменить перевод при помощи POedit в файле .ро (он генерирует файл .mo).