Добро пожаловать, Гость!
Локализация - Страница 3
Предложения и пожелания | Локализация
biket
:
Как лучше сделать поддержку локализации (мультиязычности проще говоря) в движке?
1. Через файлы .po
Как работает: в папке language будут файлы .po с разным переводом, эти файлы можно редактировать только с помощью специальных программ. В шаблонах нужно будет писать что-то вроде <? __("Registration") и в зависимости от выбранного языка будет подставляться нужный перевод.
2. Через файлы php
в папке language будут файлы .php с разным переводом, эти файлы можно будет отредактировать с помощью любого текстового редактора (хоть в блокноте). Файл будет содержать примерно следующее:
$lang['Registration']='Регистрация';
$lang['Forum']='Форум';
В шаблонах нужно будет писать что-то вроде <? echo $lang['registration'] или <? echo LANG_REGISTRATION в зависимости от выбранного языка будет подставляться нужный перевод.
3. Через базу
Весь перевод будет храниться в базе данных MySQL, редактировать можно будет через админку сайта. В шаблонах нужно будет писать что-то вроде <? echo $lang['registration'] или <? echo LANG_REGISTRATION и в зависимости от выбранного языка будет подставляться нужный перевод.
Как вам было бы удобнее?
Локализация
8 Ноября 2014Как лучше сделать поддержку локализации (мультиязычности проще говоря) в движке?
1. Через файлы .po
Как работает: в папке language будут файлы .po с разным переводом, эти файлы можно редактировать только с помощью специальных программ. В шаблонах нужно будет писать что-то вроде <? __("Registration") и в зависимости от выбранного языка будет подставляться нужный перевод.
2. Через файлы php
в папке language будут файлы .php с разным переводом, эти файлы можно будет отредактировать с помощью любого текстового редактора (хоть в блокноте). Файл будет содержать примерно следующее:
$lang['Registration']='Регистрация';
$lang['Forum']='Форум';
В шаблонах нужно будет писать что-то вроде <? echo $lang['registration'] или <? echo LANG_REGISTRATION в зависимости от выбранного языка будет подставляться нужный перевод.
3. Через базу
Весь перевод будет храниться в базе данных MySQL, редактировать можно будет через админку сайта. В шаблонах нужно будет писать что-то вроде <? echo $lang['registration'] или <? echo LANG_REGISTRATION и в зависимости от выбранного языка будет подставляться нужный перевод.
Как вам было бы удобнее?
Последний раз редактировалось biket
8 Ноября 2014
Комментарии:
Sweet_PersoN_
8 Ноября 2014
biket (8 Ноября 2014):
Sweet_PersoN_, Как минимум геммороя прибавляет очень хорошо.
biket, ну его тогда нафиг, первый вариантSweet_PersoN_, Как минимум геммороя прибавляет очень хорошо.
Королева
8 Ноября 2014
я наверное все же за второй вариант) лишние запросы нам нафиг не нужны, а с первым вариантом фиг кто разберется)
я наверное все же за второй вариант) лишние запросы нам нафиг не нужны, а с первым вариантом фиг кто разберется)
Zed 8 Ноября 2014
<?
<?php
class Lang
{
private $data = array();
private $file;
private $module;
public function word($key)
{
// $this->load($file);
if (empty($this->data[$key])) $data = $key;
else $data = $this->data[$key];
return $data;
}
public function __construct($file)
{
$this->file = $file;
if(Core::moduleId() !== false && file_exists(ROOT.'/modules/'.Core::moduleId().'/lang/'.Core::language().'/'.$this->file.'.php'))
{
$this->data = include(ROOT.'/modules/'.Core::moduleId().'/lang/'.Core::language().'/'.$this->file.'.php');
}
elseif(file_exists(SYS.'/lang/'.Core::language().'/'.$this->file.'.php'))
{
$this->data = include(SYS.'/lang/'.Core::language().'/'.$this->file.'.php');
}
else
{
$this->data = include(SYS.'/lang/'.Core::language().'/lang.php');
}
$this->data += include(SYS.'/lang/'.Core::language().'/lang.php');
}
}
///// go
function _t($word, $file = 'lang')
{
$lang = new Lang($file);
return $lang->word($word);
}
///word
echo _t('lang') ;
?>
<?
<?php
class Lang
{
private $data = array();
private $file;
private $module;
public function word($key)
{
// $this->load($file);
if (empty($this->data[$key])) $data = $key;
else $data = $this->data[$key];
return $data;
}
public function __construct($file)
{
$this->file = $file;
if(Core::moduleId() !== false && file_exists(ROOT.'/modules/'.Core::moduleId().'/lang/'.Core::language().'/'.$this->file.'.php'))
{
$this->data = include(ROOT.'/modules/'.Core::moduleId().'/lang/'.Core::language().'/'.$this->file.'.php');
}
elseif(file_exists(SYS.'/lang/'.Core::language().'/'.$this->file.'.php'))
{
$this->data = include(SYS.'/lang/'.Core::language().'/'.$this->file.'.php');
}
else
{
$this->data = include(SYS.'/lang/'.Core::language().'/lang.php');
}
$this->data += include(SYS.'/lang/'.Core::language().'/lang.php');
}
}
///// go
function _t($word, $file = 'lang')
{
$lang = new Lang($file);
return $lang->word($word);
}
///word
echo _t('lang') ;
?>
Zed 8 Ноября 2014
<?
<?php
return array(
'lang_name' => "Русский",
'read_more' => "Читать далее",
'home' => "Главная"
);
?>
<?
<?php
return array(
'lang_name' => "Русский",
'read_more' => "Читать далее",
'home' => "Главная"
);
?>
biket
8 Ноября 2014
Автор темы
Sweet_PersoN_, Как минимум геммороя прибавляет очень хорошо.
______________________
Установи себе подпись: Ссылка
Автор темы
Sweet_PersoN_, Как минимум геммороя прибавляет очень хорошо.
______________________
Установи себе подпись: Ссылка
PluginS
8 Ноября 2014
Sweet_PersoN_, Лучше википедии никто не расскажет о библиотеке gettext. Да и я привык в wordpress с ним работать.
Sweet_PersoN_, Лучше википедии никто не расскажет о библиотеке gettext. Да и я привык в wordpress с ним работать.