我有一个双语,英语和西班牙语的脚本。语言变量的值保存为数组,其各自的值为英语和西班牙语。
示例语言代码如下:
if ($_SESSION['language'] == "english") {
$lang['0'] ="Home";
$lang['1'] ="Articles";
$lang['2'] ="Categories";
} else {
$lang['0'] ="Inicio";
$lang['1'] ="Articulos de ";
$lang['2'] ="Categorias";
for ($i=0; $i<count($lang); $i++)
$lang[$i] = $lang[$i];
}
我遇到的问题是,对于西班牙语,有时单词会以相反的顺序读取,特别是如果它们是形容词。例如,英语中的“Red Car”会将“Carro Rojo”翻译为正确(从字面上翻译为英语为“Car Red”)
以上面的代码为例,我想有一个标题为“婚礼文章”,“婚礼”是字段的值,“文章”是语言变量的值,如下:
echo $category_name." ".$lang['1'];
如果用户正在用英语阅读该网站,标题的名称将正确读取,如“婚礼文章。但是,如果用户正在阅读该网站的西班牙语,它将读取”Bodas Articulos de“而不是” Articulos de Bodas“
我现在正在做的是:
if ($_SESSION['language'] == "english") {
echo $category_name." ".$lang['1'];
} else {
echo $lang['1']." ".$category_name;
}
请注意相反的顺序。
我想知道的是,是否有一个函数可以反转两个字段值的顺序,以满足另一种语言的可读性。
我是一名0级php爱好者,并不知道所有可用的功能。我的工作是我在诸如此类的精美网站中找到的例子。
答案 0 :(得分:0)
实现这一目标的多种方法,下面是一个。
<?
$groupLabels = array(
'sites' => array('Websites', 'Sitios de Web'),
'articles' => array('Articles', 'Articulos de'),
'categories' => array('Categories', 'Categorias')
);
$itemLabels = array(
'car' => array('Car', 'Carro'),
'book' => array('Book', 'Libro'),
'food' => array('Food', 'Comida')
);
function getLabel($language, $group, $item) {
global $groupLabels;
global $itemLabels;
if ($language == "english") {
return $itemLabels[$item][0] . " " . $groupLabels[$group][0];
} else if ($language == "spanish") {
return $groupLabels[$group][1] . " " . $itemLabels[$item][1];
} else {
return "Language not found";
}
};
echo getLabel('english', 'articles', 'car') . "<br />"; // yields "Car Articles"
echo getLabel('spanish', 'articles', 'car') . "<br />"; // yields "Articulos de Carros"
?>
答案 1 :(得分:0)
我明白了你的意思。
这就像中文和英文,
在英语中,使用'名字姓氏'
但在中文中,我们使用“姓氏名字”
我们总是喜欢这样: ./locale/ -English.php -Spanish.php
在English.php中
$lang = array(
'red_car' => 'red car',
...
)
在Spanish.php中
$lang = array(
'red_car' => 'Carro Rojo',
...
)
包括语言文件:
require_once(./locale/English.php)
或
require_once(./locale/Spanish.php)
在代码中使用$lang['red_car']