Введение в шаблоны перевода
Joomla является поистине международным приложений и поддерживает перевод всех строк, содержащихся в ней. Шаблоны не являются исключением и немного дополнительного времени провел обеспечения того, чтобы строки, используемые в шаблонах переводимые будет выплачивать дивиденды.
Система перевода была разработана, чтобы быть максимально простыми и ошибки доказательства насколько это возможно. Например, даже если языковой файл отсутствует, или конкретной строки не были переведены, Joomla будет прозрачно откат к показаны непереведенные строки. Есть также несколько полезных инструментов, встроенных в Joomla себя, чтобы помочь переводчикам в создании нового перевода.
В этой главе вы узнаете о построении языка определения файлов для вашего шаблона и, как включить перевод на Ваш файл шаблона пакета. Вы также узнаете, как сделать так, что все строки, используемые в шаблоне, переводимые и отладки нового перевода.
Расположение файлов шаблонов языка определения
Язык определения файлы для интерфейсных шаблонов хранятся в
[path-to-Joomla]/language/[ln-LN]
где [LN-LN] является код языка. Коды языков определены в RFC3066 [1] файл должен быть назван
[ln-LN].tpl_[template-name].ini
где [template-name] является именем шаблона (в нижнем регистре).
Например, британский английский языковой файл для шаблона Beez является
[path-to-Joomla]/language/en-GB/en-GB.tpl_beez.ini
Вы также должны создать отдельный файл языка для перевода обратно администратора конце шаблона.
Это будет храниться в
[path-to-Joomla]/administrator/language/[ln-LN]
но файл именования то же самое.
Для администратора шаблонов, в отличие от интерфейсных шаблонов, второй из этих файлов только один обязательный.
Например, британский английский языковой файл для шаблона администратора Хепри находится в
[path-to-Joomla]/administrator/language/en-GB/en-GB.tpl_khepri.ini
Создание файла определения языка
Важное примечание: Joomla язык INI-файлы должны быть сохранены в UTF-8 без Byte Order Mark (BOM) [2].
Формат языковых файлов определения очень проста. Бланки линий и линий, начинающихся с "#" игнорируются, а последняя может
быть использована для добавления комментариев к файлу.
KEY=Value
где "KEY" является строка, которая будет переведена и “Value” является перевод строки. Например
Каждая строка состоит из пары строк, разделенных знаком равенства, как это
ADDITIONAL INFORMATION=Additional Information
“KEY” должны быть во всех столицах или строка не будет найдена. Случае исходная строка не имеет значения в виде строк, сложенных в верхний регистр, прежде чем искать происходит. Так что “additional information”, “Additional Information” или даже “AdDiTiOnAl InFoRmAtIoN” будет искаться.
“KEY” может включать пробелы и другие знаки препинания, но не должно быть пробелов обе стороны от знака равенства, как пробелы являются значительными. Если более чем одна запись имеет тот же левой стороны, последний, которые могут возникнуть является тот, который будет использоваться.
"VALUE" не может включать в себя двойные кавычки ("). Чтобы получить двойной кавычки необходимо использовать HTML специальная последовательность символов" "" вместо. Single-кавычки (') действительны.
Внесении изменений templateDetails.xml файл
Чтобы убедиться, что ваш шаблон полностью интернационализации необходимо убедиться в том, что некоторые элементы XML переводятся и что языковые файлы определения приведены в templateDetails.xml файл.
Перевод templateDetails.xml
Пару элементов в templateDetails.xml файл используется в Template Manager и сами переводимые. Они должны всегда быть переведены.
| name | Название шаблона. Например, Beez |
| description | Описание шаблона. |
Эти поля также могут быть показаны пользователю во время установки шаблона.
Добавление файлов языка описания к templateDetails.xml
Все языковые файлы должны быть объявлены в templateDetails.xml файл. Это делается путем добавления двух <language> элементов для каждого языка, который будет включен в шаблон: один для переднего конца строки; другие для администратора фоновых строк. Например, два британских английский языковые файлы и две немецкие языковые файлы для шаблон Beez объявлены как следует
<?xml version=”1.0” encoding=”utf-8” ?>
<install version=”1.5” type=”template”>
.........
<languages>
<language tag=”en-GB”>en-GB.tpl_beez.ini</language>
<language tag=”de-DE”>de-DE.tpl_beez.ini</language>
</languages>
.........
<administration>
<languages folder=”admin”>
<language tag=”en-GB”>en-GB.tpl_beez.ini</language>
<language tag=”de-DE”>de-DE.tpl_beez.ini</language>
</languages>
</administration>
</install>
Отметим, что в администрации <languages> теги папки атрибут используется. Это потому, что языковые файлы для переднего плана и
фоновые имеют те же названия файла и поэтому не может существовать в том же каталоге, в файл шаблона пакета. В этом примере,
файлы администрации языке были помещены в подкаталог администратора чтобы отделить их от файлов интерфейсных языке.
Вложение переводимые строки в шаблоне
В сам шаблон переводы обрабатываются с помощью JText статического класса. Это называется "статический", поскольку она не
требует экземпляра как объекта до его методы могут быть использованы.
Простые строки текста
Большинство строк текста могут быть переведены с помощью "_" (подчеркивание) методом.
Например, предположим, что ваш шаблон содержит текст на английском языке “Welcome”, которая должна быть переводимым.
<?php
echo 'Welcome';
?>
Тогда вы бы заменить статическую строку, как это
<?php
echo JText::_( 'Welcome' );
?>
Это приведет к переводу системы для поиска соответствующей языковой файл
для “WELCOME” на левой стороне знака равенства. Поиск без учета регистра. Если этот язык строку определения встречается
WELCOME=Welcome!
то эффект будет выводить строку “Welcome!” в браузере. Если пользователь переходит на немецкий язык, то немецкий файл языка
определения будет искали “WELCOME” и на этот раз может столкнуться строку
WELCOME=Willkommen
и так "Willkommen" будет отправлен на браузер. Важно отметить, что если пользователь переключается на немецком языке, но нет
настоящего немецкого языкового файла, или соответствующие строки не появляется в немецкой языковой файл, то Joomla вернется к
отправке непереведенные строки "“Welcome” в браузере, а также сохранение его оригинальном футляре.
Поля с форматированием строки в языке перевода
Иногда бывает необходимо включить специального формата полей внутри строки в переводе. Обычно это происходит где номера участвуют,
но может произойти даты и времени или когда точные инструкции форматирования не требуется. Если строки не должны были быть
переведены стандартных PHP функции Е и Sprintf могут быть использованы. Е функция выводит строку, отформатированную с помощью
встроенных инструкций форматирования, возвращает Sprintf функции строку, отформатированную с использованием тех же встроенных
инструкций форматирования.
JText класс предоставляет обертку методы Е и Sprintf функций позволяет статический текст для перевода в то же время позволяет
отформатировать поля для встраивания используя тот же синтаксис, как функции PHP.
Например, предположим, у вас есть строка "Пожертвования от 12,45 GBP были получены", где сумма идет от переменной
$donations, скажем. Можно разделить на две строки, как это
JText::_( 'Donations of' ) . “ $donations GBP “ . JText::_( 'have been received' )
с языком определения строк
DONATIONS OF=Donations of
HAVE BEEN RECEIVED=have been received
но это не очень хорошо работает в тех языках, где внедренных данных не в подобное место в перевод строки.
Вместо этого используйте метод Sprintf, как это
JText::sprintf( 'Donations have been received', $donations )
с языком строку определения
DONATIONS HAVE BEEN RECEIVED=Donations of %.2f GBP have been received
Вы можете включать более одного формата в перевод строки. Замены проводятся в порядке, поэтому это работает, как ожидалось
JText::sprintf( 'String with numbers in it', $num1, $num2, $num3 )
с языком строку определения
STRING WITH NUMBERS IN IT=First %d, second %d, third %d
Синтаксис спецификаторов формата
Формата состоит из знака процента (%), за которым следует один или более из этих элементов, в целях:
| Order | Type | Values | Description |
| 1. | Sign | + or - | Необязательно. Силы знака (+ или -), которые будут использоваться на номер. По умолчанию, только - знак используется на номер, если он отрицательный. Этот спецификатор сил положительных чисел иметь знак "+", а также прилагается. |
| 2. | Padding | <space>
or 0 or '<char> |
Необязательно. Символ, который используется для заполнения результатов правильный размер строки. Может быть пробел или 0 (ноль символов). По умолчанию используется пробел. Альтернативный символ может быть указано, предваряя его с одной цитаты (). |
| 3. | Alignment | <null> or - | Необязательно. Определяет, если результат должен быть по левому краю или по правому краю. По умолчанию по правому краю; - характер здесь будет сделать его по левому краю. |
| 4. | Width | Number | Необязательно. Количество символов (минимум), что преобразование должно привести дюйма |
| 5. | Precision | Number | Необязательно. Количество десятичных цифр, которые должны быть отображены для чисел с плавающей точкой. При использовании этого спецификатора на строку, она действует как точка отсечки, установка максимального символа строки. |
| 6. | Type | Mandatory.Тип данных аргумента. Возможные типы: | |
| % | Символ процента. Аргумент не требуется | ||
| b | Аргумент трактуется как целое и выводится в виде двоичного числа. | ||
| c | Аргумент трактуется как целое и выводится в виде символа с этим значением ASCII. | ||
| d | Аргумент трактуется как целое и выводится в виде подписанных десятичное число. | ||
| e | Аргумент трактуется как научные обозначения (например 1.2e +2). Спецификатор точности обозначает количество цифр после десятичной точки Начиная с PHP 5.2.1. В более ранних версиях, оно было принято как количество значащих цифр (один меньше). | ||
| u | Аргумент трактуется как целое и выводится в виде десятичного числа без знака. | ||
| f | Аргумент трактуется как поплавок и представлены в виде числа с плавающей точкой (язык знают). | ||
| F | Аргумент трактуется как поплавок и представлены в виде числа с плавающей запятой (не язык знают). | ||
| o | Аргумент трактуется как целое и выводится в виде восьмеричного числа. | ||
| s | Аргумент трактуется и представляется как строка. | ||
| x | Аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в нижнем регистре). | ||
| X | Аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (с заглавной буквы). | ||
Формат аргументов замены
Строка формата поддерживает аргумент нумерации и даже замены. Это полезно, когда два или более элементов данных должно быть включено в строку, но различия в языке структуры означает, что порядок использования данных объектов не то же самое.
Например, предположим, у нас есть следующий код
echo JText::sprintf( 'Balls in the bucket', $number, $location );
с этого языка перевода строки
BALLS IN THE BUCKET=There are %d balls in the %s
Тогда, если
$number = 3
$location = 'hat'
что выдаст "Есть 3 мяча в шляпе". Но учтите, если вы хотите изменить перевод
BALLS IN THE BUCKET=The %s contains %d balls
Это теперь выход "3 содержит шляпе шаров", которая четко ерунда. Вместо того, чтобы изменить код, вы можете указать в перевод строки, которая аргументом каждой из заполнителей относятся. Изменение перевода
BALLS IN THE BUCKET=The %2$s contains %1$d balls
и выхода становится "шляпы содержит 3 мяча", как ожидалось.
Дополнительное преимущество, которое позволяет на номер аргументов является то, что вы можете повторить заполнителей, не добавляя больше аргументов в коде. Например, изменение перевода
BALLS IN THE BUCKET=The %2$s contains %1$d balls, so there are %1$d balls in the %2$s
и это будет правильно выход "шляпу содержит 3 мяча, так Есть 3 мяча в шляпе".
Отладка перевод
Joomla поддерживает некоторые полезные механизмы отладки, которые могут сделать его легче найти непереведенные строки и диагностировать проблемы с языком перевода в установленных расширений.
Отладка языка
Вы активировать язык отладки с помощью администрации Back-конце, перейдя в глобальной конфигурации и нажав на вкладке System. Найти поле Debug языке, измените значение на "Да" и сохранить изменения.
С этой опцией активного все переводимые строки показаны окруженный со специальными символами, которые указывают свой статус
| ●Joomla CMS● | (Текст окружении пули) указывает, что матч был найден в языковой файл определения и строка была переведена. |
| ??Joomla CMS?? | (Текст окружении пары знаки вопроса) указывает, что строка переводимые, но не было найдено совпадение в языковой файл определения. |
| Joomla CMS | (Текст без каких-либо окружающих персонажей) указывает, что строка не переводимые. |
Отладка системы
Дополнительная информация отладки языка могут быть получены путем активации системы отладки. Это можно сделать, перейдя в глобальной конфигурации и нажав на вкладке System. Найти поле отладки системы, измените значение на "Да" и сохранить изменения.
С этой опцией активного всех экранов имеют дополнительную отладочную информацию в конце каждой страницы. В настоящее время это включает в себя
Информация профиля. Это количество времени, необходимого для выполнения кода до различных точках знака в коде.
* Использование памяти. Размер оперативной памяти используется.
* SQL запросов. Все SQL запросы, выполняемые в процессе создания страницы.
* Языковые файлы загружены. Список всех языковых файлов, загруженных в процесс создания страницы, включая полную информацию пути. Это может быть полезно проверить, что ожидается файлы были загружены. Число после каждого файла путь число раз, что файл был ссылки.
* Диагностика непереведенных строк. Список всех непереведенных строк найдены и вероятное местоположение файла данного где вызова JText было сделано.
* Дизайнер непереведенных строк. Список всех непереведенных строк найден, но перечисленные в формате ключ = значение, чтобы они могли быть копия-вставить непосредственно в файл языка определения (INI).
Эта система плагинов управления, что отображается при отладке активируется в глобальной конфигурации. Она включена по умолчанию. Вы можете получить доступ к параметрам плагин Расширения → менеджер плагинов. Найдите "Система - Debug" плагин и щелкните по нему. Есть три параметра, представляющих интерес для переводчиков.
* Дисплей загружен языковые файлы. Если установлено значение "Да", то отладочная информация будет включать в себя список языковых файлов, которые были запрошены в качестве текущей страницы генерируются.
* Дисплей неопределенный строк языка. Если установлено в "диагностический режим", то список непереведенных строк и расположение файла, содержащего призыв к JText включен в отладочной информации. Если установлено значение "дизайнер режиме", то список непереведенных строк в формате, который можно копировать-вставить непосредственно в файл языка определения включен в отладочной информации. То есть, он отображает список в формат ключа = String. Если установлено значение "Все режимы", то как диагностический режим и списки дизайнер режиме включены в отладочной информации.
* Газа Ключевые номера. Используется, если дисплей неопределенный строк языке имеет значение "Конструктор режим" или "Все режимы". Это позволяет Газа префикс строки форме ключа. Это полезно, если дизайнер использует общий префикс для их расширения при использовании JText методами. См. пример ниже.
Заметим, что отображение непереведенные строки будут отображаться только значение, передаваемое в соответствующий метод JText. Например, следующий код:
echo JText::_( 'Reports Import Configuration' );
Если непереведенные, конструктор режим показывает это так:
# /administrator/components/com_reports/views/reports/tmpl/default.php
REPORTS IMPORT CONFIGURATION=Reports Import Configuration
Если Газа Ключевые номера установлен в положение "Reports", то дисплей будет несколько изменится:
# /administrator/components/com_reports/views/reports/tmpl/default.php
Обратите внимание, что путь показано только лучшее предположение основано на вызов функции debug_backtrace PHP.
Иногда это точно, иногда нет, и Есть также случаи, когда файл не может быть определено.
В этих случаях вы должны использовать лучшие решения.
REPORTS IMPORT CONFIGURATION=Import Configuration


