根据所选选项需要不同的php文件
我对php非常陌生,我曾考虑通过要求一个包含变量的文件(取决于所选语言)来改变网站上的语言 目前,它只有两种语言,但会更多。带有英语块的变量存储在content.php文件中,变量存储在俄语ru.php中 这是我的html表单:根据所选选项需要不同的php文件,php,html,Php,Html,我对php非常陌生,我曾考虑通过要求一个包含变量的文件(取决于所选语言)来改变网站上的语言 目前,它只有两种语言,但会更多。带有英语块的变量存储在content.php文件中,变量存储在俄语ru.php中 这是我的html表单: EN 茹 要在整个网站中持久保存用户的语言选择,并在一段时间内存储他们的偏好,您有3个主要选项: COOKIES $\u会话变量 数据库查找 出于各种原因,我喜欢$u课程。学习 必须在每个页面的顶部使用以下PHP(我们称之为requires.PHP)。它可能是这样的
EN
茹
要在整个网站中持久保存用户的语言选择,并在一段时间内存储他们的偏好,您有3个主要选项:
requires.PHP
)。它可能是这样的:
需要.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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
您的
lang.php
就是这样的:
lang.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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
此方法将所有翻译添加到同一目录中。它们可能看起来像这样: en.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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
ru.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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
然后,在任何使用
requires.PHP
的PHP文件中,您可以用用户的首选语言输出单词:
echo $words['welcome'];
只需确保数组键本身(欢迎、发送电子邮件、关闭)未翻译
注意:上面对数组使用了短数组语法[]
。如果您使用的是PHP版本<5.4,则需要使用下面的array()
代码结构。您可以添加所需的文件以使其正常工作
form.html
我已经更改了onchange=“this.form.submit()”
EN
茹
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
$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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
ru.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';
}
$_SESSION['lang'] = $_POST['language'];
$words = [
'welcome' => 'Welcome to so-and-so',
'email' => 'Please email us at blah@blah.com',
'close' => 'Close',
];
$words = [
'welcome' => 'Добро пожаловать в такое-то',
'email' => 'Пожалуйста, напишите нам на blah@blah.com',
'close' => 'Закрыть',
];
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am english";
?>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<?php
$word = "i am russian";
?>
</body>
</html>
我觉得你的代码很好。到底什么不起作用?您将很难解决这个问题,因为您的用户必须不断提交表单才能为语言设置$\u POST
变量。如果我是你,我会考虑将值存储在会话中,并基于that@Darren我们不知道ru.php或content.php中有什么。我们也不知道什么不起作用。更好的选择是更改选择框,将语言变量设置为cookie,并根据cookie值包括您的语言文件。此选项将适用于整个站点。仅限content.php和ru.php变量,它们工作正常。我用($check=10;if($check<10){require('ru.php');}或者if($check==10){require('content.php');}谢谢!在移动onchange=“this.form.submit()”进行选择后,提交开始工作。但是它会转到一个空白页,并且只显示回显的变量。是的,这段代码会回显“我是英国人”或“我是俄罗斯人”。你在lang.php中看到一个空白页面吗?不,我添加了echo($title)而不是你的变量,我看到一个空白页面(不完全是空白的,带有文本)和标题内容。我的意思是我想在index.php上更改$title(和其他所有变量),但我不知道怎么做。注意:1)en.php
和ru.php
中的开始/结束和标记在lang.php
中已经存在,这将导致问题。2)这种方法仍然不存储用户的语言选择…这两个文件在下拉选择之后只会使用一次,这似乎与OP的目标不匹配。我将尝试一下。Th谢谢你!