Лучший способ управлять текстом, отображаемым пользователям в PHP - PullRequest
1 голос
/ 20 февраля 2011

Хорошо, конечно, об этом уже спрашивали и отвечали, но я как-то не могу найти подходящий учебник.Я хочу, чтобы текст отображался пользователям где-то еще и чтобы мой код не стал слишком большим и нечитаемым.Мой сайт не будет интернационализирован.Я просто хочу иметь какой-то файл со структурой ключ-значение и получить текст оттуда.Я хочу сохранить текст в файлах, а не в базе данных, как предлагают некоторые учебники.Я нашел решение, которое будет работать, но я не уверен, что это хороший подход.Я подумываю использовать parse_ini_file и сохранить свои тексты в файле .ini.Что-то не так с этим подходом?Не могли бы вы предложить что-нибудь получше?

Ответы [ 5 ]

6 голосов
/ 20 февраля 2011

Я помещаю все языковые данные в массивы. Это просто, а также мы можем добавить поддержку нескольких языков

языки / * В файле En.php 1004 *

<?php 
 return array(  
   'index' => 'Homepage',
   'feedback' => 'Feedback'
   'logout' => 'Logout from profile',
 )
?>

языки / ru.php

<?php 
 return array(
   'logout' => 'Выйти из профиля',
 )
?>

Тогда мы можем загрузить языки:

$lang = include('lang/en.php');
if(isset($_GET['lang']))
{
   $lang = array_merge($lang, include('lang/ru.php'));
}

После всего этого $ lang будет выглядеть так:

Array
(
   [index] => Homepage
   [feedback] => Feedback
   [logout] => Выйти из профиля
)

И мы можем очень просто использовать его:

function __($name) {
    global $lang;
    return $lang[$name];
}

Где-то в шаблоне сайта:

...
<title><?=__('index')?></title>
</head>
<body>
<?=__('feedback')?>
1 голос
/ 20 февраля 2011

почему бы не использовать простой текстовый файл с запятыми или необычным символом для хранения этих данных?Вы можете прочитать его и разобрать в массив с помощью

$file = file_get_contents("/path/to/file");
$lines = explode('\r', $file);
foreach($lines as $line) $message[substr($line, 0, strpos($line, ','))] = substr($line, strpos($line, ','));

, тогда у вас должен быть массив типа $messages[3] = "No soup for you!";

, файл может выглядеть следующим образом:

1,The site is down.
2,Try again.
3,No soup for you!
4,Signs point to yes.

(У меня, вероятно, есть некоторые аргументы, неуместные в этих функциях - я всегда забываю, что является иглой, а какой стогом сена.)

0 голосов
/ 31 августа 2016

мне нравится ответ с файлом lang / en.php. но вместо файла для каждого языка я использую файл для каждой веб-страницы (или класса и т. д.). это сохраняет размеры файлов ниже, и я создаю 3D массив:

`return array (" EN "=> array (" title "=>" Welcome - Good Morning ", ...), "TG" => array ("title" => "Mabuhay - Magandang Umaga Po", ...) ); '

Очень легко добавлять новые языковые строки ...

Это значительно упрощает работу с переводчиками, поскольку они могут видеть родной язык в непосредственной близости от иностранного в 1 редакторе ,,,

0 голосов
/ 21 февраля 2011

Мне нравится:

$defaultLang = array('Home','Logout',etc)
$otherLang=array( 'ru' => array('Home_in_ru','logout_in_ru',etc);

Вы переводите так:

echo translate('Home');

Функция:

function translate($msg) {
    if ($_GET['lang']=='en')
        return $msg;

    return $otherLang[$_GET['lang']][array_search($msg,$defaultLang)];
}

// Обратите внимание, что функция упрощенатам

Как вы видите, по умолчанию case deosnt 'нужно что-либо загружать или выполнять какие-либо операции, функция просто возвращает переданный аргумент

0 голосов
/ 20 февраля 2011

Вы можете обработать ваши данные в скрипте. В этом сценарии вы вызываете определенный источник (например, предлагаемый вами INI-файл). Затем вы используете шаблонизатор. Для этого движка вы указываете на файл шаблона и даете шаблону все переменные.

Шаблон генерирует HTML и вставляет переменные в нужное место. Таким образом, вы сохраняете свой php-код (бизнес-логика) чистым, вне представления (шаблона). Также вы можете управлять переменными в одном файле (ini / xml, но это может быть что-то совершенно другое).

Для шаблонизаторов Smarty является самым известным из всех. Существуют также чистые системы шаблонов на основе php, просто Google для них найдет ту, которая соответствует вашим потребностям.

...