Концепция локализации в системе Корпорация 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.

Комментарии

Популярные сообщения