我对php还是很陌生,我当时正在考虑通过要求一个文件包含取决于所选语言的变量来更改网站上的语言。
目前,它只有2种语言,但还会更多。带有英语块的变量存储在content.php文件中,而带有俄语的变量存储在ru.php中。
这是我的html表单:
<div id="language">
<form method="post" action="lang.php" onchange="this.form.submit()">
<select name="language">
<option value="en">en</option>
<option value="ru">ru</option>
</select>
</form>
</div>
这是我尝试使用的PHP(但没有成功):
$option = $_POST['language'];
if ($option == 'ru')
{
require('ru.php');
}
if ($option =='en')
{
require('content.php');
}
如果您知道我如何使它工作,请告诉我。
答案 0 :(得分:4)
要在整个网站上保持用户的语言选择的持久性,并在一段时间内存储他们的偏好,您可以使用以下三种主要选择:
出于各种原因,我喜欢$ _SESSIONs。学习more about sessions here。
在每个页面的顶部都需要以下PHP(我们将其称为WHERE a.starttime >= b.starttime and (b.enddate is null OR a.endtime <= b.endtime)
)。看起来可能像这样:
requires.php
requires.php
您的$timeout = 60*60*3; // 3 hour maximum session timeout
session_start([
'name' => 'my_groovy_session',
'gc_maxlifetime' => $timeout, // server session lifetime
'cookie_lifetime' => $timeout, // client cookie lifetime
]);
// set language if empty
if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
// choose file
if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
require_once 'languages/'. $_SESSION['lang'] .'.php';
} else {
require_once 'languages/en.php';
}
就像这样:
lang.php
lang.php
此方法将所有翻译添加到同一目录中。他们可能看起来像这样:
en.php
$_SESSION['lang'] = $_POST['language'];
ru.php
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
然后在使用$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
的任何PHP文件中,您都可以用用户首选的语言输出单词:
requires.php
只要确保不翻译数组echo $words['welcome'];
本身(欢迎,电子邮件,关闭)。
注意:上面的代码对数组使用短数组语法keys
。如果您使用的PHP版本<5.4,则需要使用[]
。
答案 1 :(得分:0)
下面的代码结构可以正常工作。您可以添加所需的文件以使其正常工作。
form.html
我更改了onchange="this.form.submit()"
<div id="language">
<form method="post" action="lang.php" >
<select name="language" onchange="this.form.submit()">
<option value="en">en</option>
<option value="ru">ru</option>
</select>
</form>
</div>
lang.php
<!DOCTYPE html>
<html>
<body>
<?php
$option = $_POST['language'];
if ($option == 'ru')
{
require('ru.php');
echo($word);
}
if ($option =='en')
{
require('en.php');
echo($word);
}
?>
</body>
</html>
en.php
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
ru.php
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>