我有以下代码,因此用户可以选择他想要的语言:
<label style="float: left; width: 50%;" for="system_language">Select Language:</label>
<select id="system_language" class="selectbox float-right" onChange="switchLanguageLogin(); ">
<? echo getLanguageList(); ?>
</select>
这是语言的功能!
function loadLanguage($lng, $units = '')
{
global $ms, $la, $gsValues;
// always load main english language to prevet error if something is not translated in another language
include ($gsValues['PATH_ROOT'].'lng/english/lng_main.php');
// load another language
if ($lng != 'english')
{
$lng = $gsValues['PATH_ROOT'].'lng/'.$lng.'/lng_main.php';
if (file_exists($lng))
{
include($lng);
}
}
添加了语言功能
function getLanguageList()
{
global $ms, $gsValues;
$result = '';
$languages = array();
$q = "SELECT * FROM `gs_system` WHERE `key`='LANGUAGES'";
$r = mysqli_query($ms, $q);
$row = mysqli_fetch_array($r);
$languages = explode(",", $row['value']);
array_unshift($languages , 'english');
foreach ($languages as $value)
{
if ($value != '')
{
$result .= '<option value="'.$value.'">'.ucfirst($value).'</option>';
}
}
return $result;
}
下拉菜单中的第一个(和默认)选项是英语。问题是如果我选择西班牙语,它会转换为西班牙语,但在下拉菜单中它会保留默认值,即英语。结论是该页面是西班牙语,但下拉列表中的值显示为“英语”。
我该如何解决这个问题?
答案 0 :(得分:0)
您不在全局范围内使用$lng
变量,因此它对您的函数不可见。因此,解决方案是将所选语言作为参数提供给getLanguageList
函数,并将相等值设置为所选:
function getLanguageList($selected = 'english') {
//...
foreach ($languages as $value) {
if ($value !== '') {
$result .= '<option value="'.$value.'" ' . ($selected === $value ? ' selected="selected"' : ''). '>' . ucfirst($value) . '</option>';
}
}
//...
}
像这样选择保留下拉列表,因此保留HTML。
在您的视图中,您需要提供$lng
并致电<? echo getLanguageList($lng); ?>
。
答案 1 :(得分:0)
检入 init.php 文件应该有评论
//从cookies中获取语言
如果没有这样的评论,请在MySQL连接之前写下它并在其后添加以下代码
if (isset($_COOKIE['gs_language']))
{
$gsValues['LANGUAGE'] = $_COOKIE['gs_language'];
}
else
{
$expire = time() + 2592000;
setcookie('gs_language', $gsValues['LANGUAGE'], $expire, '/');
}
// puts selected language into cookies
if (isset($_GET['lng']))
{
$gsValues['LANGUAGE'] = $_GET['lng'];
$expire = time() + 2592000;
setcookie('gs_language', $gsValues['LANGUAGE'], $expire, '/');
}
然后转到 fn_common.php 文件并将getLanguageList函数更改为
function getLanguageList()
{
global $ms, $gsValues;
$result = '';
$languages = array();
$q = "SELECT * FROM `gs_system` WHERE `key`='LANGUAGES'";
$r = mysqli_query($ms, $q);
$row = mysqli_fetch_array($r);
$languages = explode(",", $row['value']);
array_unshift($languages , 'english');
$currentLang = $gsValues['LANGUAGE'];
foreach ($languages as $value)
{
if ($value != '')
{
$result .= '<option value="'.$value.'" ' . ($currentLang === $value ? ' selected="selected"' : ''). '>' . ucfirst($value) . '</option>';
}
}
return $result;
}