Разработать многоязычную систему

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

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

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

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

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

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

Другие вопросы по тегам