Php 开发多语言系统

Php 开发多语言系统,php,translation,multilingual,analytical,Php,Translation,Multilingual,Analytical,这更像是一个分析性问题 我需要知道如何最好地制作一个多语言系统,也就是一个用户可以更改语言的系统。该语言将存储在cookie或数据库中。 我过去使用过每种语言的不同文件,例如: nl.php en.php index.php 正如您所看到的,这个系统既低效又不安全。有更好的方法吗? 我现在可以想出一些方法来做到这一点,但我真的不知道哪种方法会好 有人能帮我吗?请不要只说“像这样做!”,还要告诉我为什么这是一个好方法。如果您不需要提供通过web界面更改本地化文本的功能,您可以像这样做: inclu

这更像是一个分析性问题

我需要知道如何最好地制作一个多语言系统,也就是一个用户可以更改语言的系统。该语言将存储在cookie或数据库中。
我过去使用过每种语言的不同文件,例如:

nl.php

en.php

index.php

正如您所看到的,这个系统既低效又不安全。有更好的方法吗? 我现在可以想出一些方法来做到这一点,但我真的不知道哪种方法会好


有人能帮我吗?请不要只说“像这样做!”,还要告诉我为什么这是一个好方法。

如果您不需要提供通过web界面更改本地化文本的功能,您可以像这样做:

include/locales.php

这是最快的方法,因为使用哈希解析单个包含文件是非常快的操作。
如果您需要提供通过web界面修改本地化字符串的功能,那么您将需要在DB中存储本地化字符串,并在每次显示页面时从DB中读取em。。。这种方法的速度要慢得多。

首先,文件中不需要更多的语言。将每种语言保存在不同的文件中

  • 它更干净
  • 您可以创建一个脚本来比较定义的键。如果文件缺少密钥,您可以提醒人们修复此情况

  • 不要忘记,您可以在语言文件中保留其他设置,如:日期格式、数字格式等/

    。。。这就是重点。我需要能够通过web界面轻松地更改语言。在这种方法中,通过web界面更改语言有什么问题?我使用$language变量作为从cookie或任何您喜欢的地方传递的语言的标识符。我的意思是您不能更改语言字符串,而不是语言用户希望看到的页面。但这种方式似乎效率低下:\n例如,是否有一种方法,我可以用荷兰语/英语制作整个系统,并且多语言系统可以在另一个文件中翻译字符串中的所有内容?速度会较慢。更复杂的是,我该如何用它来表示像“Welcome,$user!”这样的字符串呢?因为显然我需要在脚本的顶部包含locales文件,但是在包含locales文件之后,用户的变量可能会改变。。。
    $lang['hi'] = 'Hoi';
    $lang['howareyou'] = 'Hoe gaat het?';
    
    $lang['hi'] = 'Hi'];
    $lang['howareyou'] = 'How are you?';
    
    include($language . '.php');
    
    <?php
        if (!isset($locales)) {
            $locales = array(
                "en" => array(
                    "hi" => "Hi",
                    "howareyou" => "How are you?"
                ),
                "nl" => array(
                    "hi" => "Hoi",
                    "howareyou" => "Hoe gaat het?"
                )
            );
        }
    ?>
    
    include("include/locales.php");
    if (!isset($locales[$language])) $locale = $locales[$deflang]; // $deflang could be "en"
    else $locale = $locales[$deflang];
    
    echo $locale["hi"]." ".$locale["howareyou"];