你好我在php中建立一个multilenguaje应用程序,这是我第一次处理multilenguaje,我试图这样做。
例如几个月
我有id | month
estructure
我有id | username | month_id
我的猜测(糟糕的猜测)它可以保存例如$ january直接在数据库上,所以在php调用时,它会查找已定义的变量。
$ january =“january”;如果我在西班牙语网上然后我改为$ january =“Enero”;
但这不起作用(很明显,因为它打印的是一个调用$ 1月的结果,它在数据库中保存为$ 1)
我试图做什么的最佳方法怎么做...导致我在这一点上丢失..我需要在数据库中使用这种结构,原因很多我现在不提,
谢谢!
我的代码
这$row2['months']
打印此$january
即使在php代码中我设置了$ january =“enero”;
答案 0 :(得分: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区分开来,因为它们的使用是特定的,数字索引为它们的情况编码增加了更多的一致性。
请注意,这不是语言区域设置的唯一方法,但这是一个易于维护的版本。
答案 1 :(得分:1)
您应该保存用户区域设置,例如在您的表格中en_US
,并根据默认语言对该值进行进一步翻译。
答案 2 :(得分:-1)
要让php评估该变量,您需要做的是eval:
$january='Enero';
$row='$january';
echo $row; //Prints $january
echo PHP_EOL;
echo eval("return ".$row.";"); //Prints Enero
这是在ideOne中:http://ideone.com/f0LCT0