Разработка многоязычной системы

Это скорее аналитический вопрос.

Мне нужно знать, как лучше всего сделать многоязычную систему, а также систему, в которой пользователь может изменить язык. Язык будет сохранен в файле 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'); 

Как вы можете видеть, эта система неэффективна и небезопасна. Есть ли лучший способ сделать это? Я могу придумать несколько способов сделать это в этот момент, но я действительно не знаю, какой из них был бы хорош.

Кто-нибудь может мне с этим помочь? Пожалуйста, не просто скажите «Сделайте это так!», Также скажите мне, почему это хороший способ сделать это.
Благодарю.

Solutions Collecting From Web of "Разработка многоязычной системы"

Ну, если вам не нужно предоставлять возможность изменять тексты локализации через веб-интерфейс, вы можете просто сделать это следующим образом:

включить / 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"]; в include("include/locales.php"); if (!isset($locales[$language])) $locale = $locales[$deflang]; // $deflang could be "en" else $locale = $locales[$deflang]; echo $locale["hi"]." ".$locale["howareyou"]; в include("include/locales.php"); if (!isset($locales[$language])) $locale = $locales[$deflang]; // $deflang could be "en" else $locale = $locales[$deflang]; echo $locale["hi"]." ".$locale["howareyou"]; 

Это самый быстрый подход, поскольку синтаксический анализ одного файла с хешем выполняется очень быстро. Если вам необходимо предоставить возможность изменять строки локализации через веб-интерфейс, вам нужно будет хранить строки локализации в БД и читать их там каждый раз, когда вы показываете страницу … Этот подход медленнее.

Прежде всего, вам не нужно иметь больше языка в файле. Сохраняйте каждый язык в отдельном файле.

  1. Это чище
  2. Вы можете сделать скрипт для сравнения определенных ключей. Если в файле отсутствует ключ, вы можете предупредить людей об исправлении этой ситуации.

Не забывайте, что вы можете сохранить и другие настройки в языковых файлах: формат даты, форматирование чисел и т.