четвер, 12 лютого 2009 р.

Концепция локализации в системе Корпорация 2

В Корпорации 2 CMS созданы компоненты для локализации приложения.
Компонента называется translate.

translate - компонента реализующая непосредственно перевод.
lang_bar - компонента для вывода перечня языков в котором можно переключиться.

В основном классе Корпорации внесены 3 свойства, связанных с переводом (локализацией):

public $lang='ru'; // Текущий язык публичной части
public $lang_adm='ru'; // Текущий язык админ-части
public $langs=array('ru','ua', 'en'); // Доступные языки

Соответственно, данные переменные можно указывать в основном конфигурационном файле: config_main.php

Для каждой компоненты есть папка lang в ней сохраняются файлы с массивами переводов.
Например:
/lang/ua/index.php - файл перевода для украинского языка.
Его содержимое:
defined( '_VALID_CORP' ) or die( 'Прямой вызов запрещён' );

$this->msg=array(
array('login_label', 'Логін'),
array('password_label' , 'Пароль'),
array('reg_label' , 'Реєстрація'),
array('forg_label' , 'Згадати пароль'),
array('hello_label' , 'Ласкаво просимо'),
array('exit_btn' , 'Вихід')

);

В компоненте, в которой реализовывается перевод создаётся класс перевода:
function CMain()
{
$GLOBALS["c"]->ins_comp_file("translate/main_class.php");
$this->trans=new translate($application);
$this->trans->get_msg('auth');
}

В шаблоне, используются вместо названий латинское обозначение выражения, например:
// Шаблон формы авторизации
$GLOBALS["myauth"]->auth_form='





















<%login_label%>:






<%password_label%>:





<%reg_label%> | <%forg_label%>





Перед тем, как вывести информацию на экран, переводим её:
echo $this->trans->tr($this->auth_form);

На данный момент, пример применения перевода можно просмотреть в компоненте авторизации auth.

Немає коментарів:

Мені соромно за українські ЗМІ. Але ще не пізно згадати, для чого існує журналістика

Мені соромно за українські ЗМІ, які на 12 році війни часто мовчать про українське, але легко знаходять місце для того, що оплачено. Поки вор...