我有一个网站,我想创建其他语言版本。 我不想为每种语言创建文件夹。我在想它 可以在每个页面或主页面上添加组合框 这样用户可以设置语言然后使用php我会 检查选项并显示正确的版本。任何建议 得到那个?
答案 0 :(得分:3)
如果您有组合框,当用户提交组合框时,请使用session_start();
将语言存储在会话中($_SESSION['lang'] = $_POST['lang'];
必须调用)。我建议你将语言列入白名单:
session_start();
// define language whitelist
$allowedLangs = array('en', 'de');
// only store the new user language if it's an allowed one
if (isset($_POST['lang']) && in_array($_POST['lang'], $allowedLangs)) {
$_SESSION['lang'] = $_POST['lang'];
}
// define the user language based on session data or use 'en' as default if not available
$userLang = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'en';
// parse some language file according to the language
$translations = // TODO load some file with $userLang here
当然,您应该根据自己的项目和环境进行调整。对于翻译文件,您可以使用返回数组的普通PHP文件:
<?php
// en.php
return array(
'some.key' => 'Translation',
);
然后,如果你包含那个文件,include的返回值将是数组,所以在上面的代码中你可以这样做:
$translations = include 'translations/'.$userLang.'.php';
然后,您必须通过此$translations
变量输出所有文字,例如echo $translations['some.key']
。
答案 1 :(得分:1)
如果你想在lang文件中使用cookies,你可以包含一系列单词或内容来使用。
<?php
if($_GET['language']){
$lang = (string)$_GET['language'];
setcookie("lang", $lang, time()+3600);
header('Location: '.$_SERVER['PHP_SELF']);
die();
}elseif(!isset($_COOKIE['lang'])){
$lang='en';
}else{$lang=$_COOKIE['lang'];}
switch($lang){
case "en":
include('./lang/en.php');
break;
case "fr":
include('./lang/fr.php');
break;
case "pol":
include('./lang/pol.php');
break;
default:
include('./lang/en.php');
break;
}
?>
答案 2 :(得分:0)
你的意思是
if ($_GET['language']) {
include $_GET['language'] . ".php";
}
然后将语言保存在带有名称的php文件中,或者根据你想用它做什么来保存函数
答案 3 :(得分:0)
显示与会话存储语言相关的页面视图。
多数民众赞成........