[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как вернуть содержимое файла из класса
NagarD
Добрый вечер

есть класс загрузки файла языков

class Language
{
function loadLang()
{
return 'ru';
}
}


загружаю его вот так

$language = new Language();
require 'static/language/'.$language->loadLang().'.php';


Это работает так. Вызывается из индексного файла. Потом подключается html файл меню где вставлены переменные <?=$main?> <?=$forum?> и.д. В файле перевода что-то вроде $main = 'Главная';

но хочу чтобы всё делал класс сам. Вот так:

class Language
{
function loadLang()
{
return require 'static/language/ru.php';
}
}


Но это не работает. Подскажите как это исправить, почему оно не работает, как лучше сделать?
kaww
class Translator
{

private $data;

public function __construct($locale = 'ru')
{
$this->data = include 'static/language/' . $locale . '.php';
}

public function translate($message)
{
if (isset($this->data[$message])) {

return $this->data[$message];
}
return $message;
}
}


$translator = new Translator();
echo $translator->translate('forum');



Файл static/language/ru.php;
return array(
'forum' => 'форум',
'username' => 'имя пользователя'
);
NagarD
спасибо. Но я думаю это не очень оптимально при каждом переводе вызывать метод.
kaww
NagarD, В вашем случае придется в каждом методе ваших классов, где нужны переводы, подключать файл с ними. Что приведет к многочисленным обращениям к фс и перерасходу памяти. Вот это, действительно, не очень оптимально.

А вообще эта задача уже давно и не однократно решена. Стоит лишь поискать https://github.com/search?l=PHP&q=I18n&ref=...pe=Repositories
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.