0

在我正在创建的网站中,我想包含多种语言。

下面是我如何确定我应该显示哪种语言。

    <?php
    $pagename = $_SERVER["REQUEST_URI"];
       if (strpos($pagename,'?en') !== false) 
         {
            echo 'english';
here is when I have to include a language template file for english language.
         }
    ?>

我的目标是包含语言模板文件,而不是为任何语言复制我的所有网站。

所以我的想法是,例如,index.php所有语言的变量都是相同的,但内容会改变。

<div id="main">
<?php echo $main_description; ?>
</div>

我应该如何包含一个语言文件才能使它工作?

$main_description ="this is the main description written in english"
4

5 回答 5

1

您可以使用类似于您拥有的 if 语句的内容,并将特定文件包含在所有变量中。

switch ($_GET['lang']) {
    case "en":
        include "lang/en.php";
        break;
    case "es":
        include "lang/es.php";
        break;
    default:
        include "lang/en.php";
}

但是在这里,您的所有字符串都将位于变量中,您必须小心不要在其余代码中使用/覆盖这些变量。

此页面提供了一个非常简单且易于遵循的示例,说明如何执行 JSON 编码语言文件,脚本加载并找到您想要的文本并返回翻译后的文本。

于 2012-07-16T14:06:46.543 回答
1

如果您在开发中没有走得太远,我建议您使用支持国际化的框架。

例如,Codeigniter 有Language 类

或者你可以实现与他们类似的东西。

于 2012-07-16T14:07:29.037 回答
1

您可能必须为每个模板编写不同的语言,并且只包含该文件而不是英文文件。

如果我可以推荐,你有没有为你的网站尝试过这个? https://translate.google.com/manager/

可能会让你的工作轻松很多。

于 2012-07-16T14:08:26.887 回答
1

国际化事实上的标准方法是GNU GettextPHP 绑定)。

于 2012-07-16T14:10:03.343 回答
0

不要用文件来做,建立一个像这样的数据库:

id               | en              | de             | es
---------------------------------------------------------------------
MAIN_DESCRIPTION | English desc .. | German desc .. | Spanish desc ..
MENU_1           | English des2 .. | German des2 .. | Spanish des2 ..

当您获得正确的代码时,只需加载正确的表

if ( strpos( $pagename, '?en' ) !== false ) {
  $lang_code = 'en';
} elseif ( strpos( $pagename, '?de' ) !== false ) {
  $lang_code = 'de';
...
}

$query = "SELECT " . $lang_code . " FROM texts WHERE id = MAIN_DESCRIPTION";

ETC ...

PS:不要在查询中直接插入变量,这会导致错误的query injection尝试。

于 2012-07-16T14:08:16.387 回答