Разработать многоязычную систему
Это больше аналитический вопрос.
Мне нужно знать, как лучше всего создать многоязычную систему, то есть систему, в которой пользователь может менять язык. Язык будет сохранен в файле cookie или в базе данных.
В прошлом я работал с разными файлами для каждого языка, например:
nl.php
$lang['hi'] = 'Hoi';
$lang['howareyou'] = 'Hoe gaat het?';
Вфайле En.php
$lang['hi'] = 'Hi'];
$lang['howareyou'] = 'How are you?';
index.php
include($language . '.php');
Как видите, эта система неэффективна и небезопасна. Есть ли лучший способ сделать это? Я могу придумать несколько способов сделать это в этот момент, но я не знаю, какой из них будет хорош.
Кто-нибудь может мне с этим помочь? Пожалуйста, не просто говорите "Сделай так!", А также скажи мне, почему это хороший способ сделать это.
2 ответа
Что ж, если вам не нужно предоставлять возможность изменять тексты локализации через веб-интерфейс, вы можете просто сделать это так:
включить / locales.php
<?php
if (!isset($locales)) {
$locales = array(
"en" => array(
"hi" => "Hi",
"howareyou" => "How are you?"
),
"nl" => array(
"hi" => "Hoi",
"howareyou" => "Hoe gaat het?"
)
);
}
?>
index.php
include("include/locales.php");
if (!isset($locales[$language])) $locale = $locales[$deflang]; // $deflang could be "en"
else $locale = $locales[$deflang];
echo $locale["hi"]." ".$locale["howareyou"];
Это самый быстрый подход, потому что анализ одного включаемого файла с хэшем - очень быстрая операция. Если вам нужно предоставить возможность изменять строки локализации через веб-интерфейс, то вам нужно будет хранить строки локализации в БД и читать их оттуда каждый раз, когда вы показываете страницу... Этот подход намного медленнее.
Прежде всего вам не нужно иметь больше языка в файле. Храните каждый язык в отдельном файле.
- Это чище
- Вы можете сделать скрипт для сравнения определенных ключей. Если в файле отсутствует ключ, вы можете предупредить людей о необходимости исправить эту ситуацию.
Не забывайте, что вы можете сохранить и другие настройки в языковых файлах, такие как: формат даты, форматирование чисел и т. Д. /