根据使用的语言切换变量中两个字段的值

时间:2014-12-01 06:57:45

标签: php

我有一个双语,英语和西班牙语的脚本。语言变量的值保存为数组,其各自的值为英语和西班牙语。

示例语言代码如下:

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爱好者,并不知道所有可用的功能。我的工作是我在诸如此类的精美网站中找到的例子。

2 个答案:

答案 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']