[英]Creating array from translated datas and merging an array in PHP
我正在设计一个具有多语言支持的网站。 我们的主要语言是土耳其语。 我不希望在admin插入土耳其语数据时,用其他语言清空其他字段。 因此,当土耳其语数据插入以“ _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);
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(因为您的...
部分可能放在parent_id
键之前)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.