Разработать многоязычную систему - PullRequest
2 голосов
/ 27 ноября 2011

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

Мне нужно знать, как лучше создать многоязычную систему, например, систему, в которой пользователь может менять язык. Язык будет сохранен в файле cookie или в базе данных.
В прошлом я работал с разными файлами для каждого языка, например:

nl.php

$lang['hi'] = 'Hoi';
$lang['howareyou'] = 'Hoe gaat het?';

1012 * В файле En.php *

$lang['hi'] = 'Hi'];
$lang['howareyou'] = 'How are you?';

index.php

include($language . '.php');

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

Может ли кто-нибудь помочь мне с этим? Пожалуйста, не просто говорите: «Делай так!», И скажи мне, почему это хороший способ сделать это.

Ответы [ 2 ]

4 голосов
/ 27 ноября 2011

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

include / 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"];

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

0 голосов
/ 27 ноября 2011

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

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

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

...