0

您好,我正在用 php 构建一个 multilenguaje 应用程序,这是我第一次处理 multilenguaje,我试图这样做。

例如几个月

我有一张带有结构的“月” id | month

在我的用户表中id | username | month_id

我的猜测(错误的猜测)我可以直接在数据库中保存例如 $january,所以在调用它的 php 中,它会查找定义的变量。

$一月=“一月”;如果我在西班牙网站上,那么我将其更改为 $january = "Enero";

但这不起作用(显然是因为它作为调用 $january 的结果打印,它在数据库中保存为 $january)

我试图做的事情的最佳方法是什么..导致我在这一点上迷失了..我需要数据库中的这个结构有很多我不会提到的原因,现在,

谢谢!

我的代码

这个$row2['months']

打印这个$january

即使在 php 代码中我设置了 $january = "enero";

4

3 回答 3

4

你可能会重新考虑你的策略。

例子:

对于 10 种语言,如果您保留 10 个定义月份名称或实际上所有语言区域设置单词的 php 文件,这就足够了,您可以在不干扰数据库的情况下包含它们。

<?php

 // this is words_en.php, you can make another like words_de.php etc.
 $months = array('january','february','march','april'....etc );

?>

如果您始终如一地构建您的语言环境文件:

 $msgs = array(
    'MSG1'=>'first message',...
 }

在您的代码和数据库中只保留引用(如'MSG1')就足够了。几个月来,您可以将它们与 $msgs 分开,因为它们的用途是特定的,并且数字索引为它们的案例编码增加了更多的一致性。

请注意,这不是语言区域设置的唯一方法,但这是一个易于维护的版本。

于 2013-05-14T07:20:13.943 回答
1

You should save the users locale e.g. en_US in your table and base further translations on that value with a fallback to the default language.

于 2013-05-14T07:18:23.363 回答
-1

To get php to evaluate that variable, what you need to do is eval:

$january='Enero';
$row='$january';

echo $row;                     //Prints $january
echo PHP_EOL;
echo eval("return ".$row.";"); //Prints Enero

Here that is in ideOne: http://ideone.com/f0LCT0

于 2013-05-14T07:19:45.170 回答