我正在设计一个支持多语言的网站。我们的主要语言是土耳其语我不想在管理员插入土耳其语数据时,用外语清空其他字段。因此,当土耳其语数据以“_tr”列结尾时,在外语字段中以“_en”和“_de”结尾,我想从Yandex Translator数据中获取自动翻译的数据。 这是我的表结构:
我将插入这样的数据结构:
$data = array(... 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' => 1);
我想像这样添加“......”:
$translated = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot");
我试过了:
$from_turkish = array('fruit' => "Elma", 'color' => "Kırmızı");
public function Translate ($from_turkish) {
$langs = array("tr", "en", "de");
$translated = array();
foreach ($langs as $lang){
foreach ($from_turkish as $field_name => $value) {
$translated[] = array($field_name.'_'.$lang => YandexTrApi($value, 'tr', $lang));
}
}
return $translated;
}
YandexTrApi
函数返回翻译的数据。最后,我使用array_merge
这样的函数:
$data_array = array_merge($translated, $data);
但它没有采取这样的形式:
$data_array = array('fruit_tr' => "Elma", 'fruit_en' => "Apple", 'fruit_de' => "Apfel", 'color_tr' => "Kırmızı", 'color_en' => "Red", 'color_de' => "Rot", 'parent_id' => 234, 'date' => "2014-08-31 23:07:47", 'status' => 1);
答案 0 :(得分:1)
array_merge($translated, $data)
很好,$translated + $data
会在这种情况下给出相同的结果,但是......
$translated[] = array($field_name.'_'.$lang => YandexTrApi($value, 'tr', $lang));
...这样你就可以在$translated
数组中推送新数组了。您只需要添加新密钥 - 请尝试使用此代码:
$translated[$field_name.'_'.$lang] = YandexTrApi($value, 'tr', $lang);
同样嵌套的foreach()
循环会给你略微不同的顺序,但我猜你不需要它来匹配db(因为你的...
部分可能放在{{{ 1}}键)。