Php 有数据库帮助的多语言网站?
所以,我希望我的网站是多语言的。然而,我曾经用一个txt.php文件来定义所有的句子。我想把它转移到我的数据库,这样我就可以建立一个相当简单的CMS类型的东西。我将所有的翻译输入数据库,然后选择并定义它们,如下所示。然而,这是行不通的。我做错了什么Php 有数据库帮助的多语言网站?,php,mysql,Php,Mysql,所以,我希望我的网站是多语言的。然而,我曾经用一个txt.php文件来定义所有的句子。我想把它转移到我的数据库,这样我就可以建立一个相当简单的CMS类型的东西。我将所有的翻译输入数据库,然后选择并定义它们,如下所示。然而,这是行不通的。我做错了什么 $sql = "SELECT * FROM Main"; $result = mysql_query($sql); function defineStrings() { switch($_SESSION[lang]) {
$sql = "SELECT * FROM Main";
$result = mysql_query($sql);
function defineStrings() {
switch($_SESSION[lang]) {
case "en":
while($row = mysql_fetch_assoc($result)) {
define("$row['identifier']","$row['texten']");
}
break;
}
}
这在index.php文件中调用,如下所示:
if ($_SESSION[lang] == "") {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$_SESSION[lang] = $lang;
$currLang = $lang;
} else {
$currLang = $_SESSION[lang];
$_SESSION[lang] = $currLang;
}
include("Localization/lang.php");
include("Localization/txt.php");
defineStrings();
改为:
$_SESSION['lang']
试试这个:
将这两行放在defineStrings函数中。
已编辑(请参见内部while循环):
这就是全部密码吗?你在哪里调用函数defineStrings()?我编辑了它。我在index.php文件管理器中调用它,“它不工作”是什么意思?你有错误吗?没有什么?错了吗?您是否在任何地方设置会话?在我第一次访问没有会话集的地方会发生什么?在index.php文件中还有我添加到问题中的代码。我得到了以下错误:
警告:mysql\u fetch\u assoc()希望参数1是resource,如果给定空值,那么为什么不使用gettext这样的工具呢?gettext正是为了实现这一目的,它有用于正确翻译工作流的工具,并且有一个巨大的生态系统?!相信我,从长远来看,与您自己的自制系统相比,使用它会更好。不知道为什么您会立即被否决,因为当索引是字符串时,您肯定必须封装索引。虽然这是一个需要纠正的错误,除非您定义了一个常量lang
,否则它不会有什么区别。这会给我带来一个错误:解析错误:语法错误,意外的T_封装的T_和_空格,应该是T_字符串或T_变量或T_NUM_字符串
它是否指出错误在哪一行(与函数相关)?
$_SESSION['lang']
function defineStrings() {
$sql = "SELECT * FROM Main";
$result = mysql_query($sql);
switch($_SESSION[lang]) {
case "en":
while($row = mysql_fetch_assoc($result)) {
define($row['identifier'],"'".$row['texten']."'");
}
break;
}
}