【发布时间】:2019-03-14 16:32:01
【问题描述】:
我有一个以这种方式使用 3 种语言的数据库:
id name de_de al_sq
1 title titel titulli
2 points punkte pike
现在在 php 中 $lang 设置为 'al_sq':
$lang = 'al_sq';
我正在尝试使用该语言的名称生成变量,在这种情况下:
$langtitle = 'titulli';
$langpoints = 'pike';
尝试类似:
$sql = "SELECT * FROM `langs`";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$lang{$row["lang"]} = $row[$lang];
}
}
但是有些东西不好,这些变量如何生成?
【问题讨论】:
-
您在第 5 行的
$lang之后有一个不匹配的大括号。 -
当您使用您发布的代码时会发生什么?
-
如果您尝试像这样推出自己的本地化系统,您将度过一段非常糟糕的时光。使用Gettext 之类的东西,为自己省去很多未来的麻烦。
-
@Sammitch - 不过 Gettext 有一定的限制;您无法处理非常排序的字符串上的语言细微差别,例如 "save" 您的意思是 "enregistrer" (表单上的按钮)还是 " économisez"(节省 10%)...而且每次更改 .po 文件时都必须重新启动 Apache - 如果您在 Windows 机器上开发,您甚至可以让它工作。
-
您可以尝试将
{与}匹配