2014-08-31 4 views
1

다국어 지원 사이트를 설계하고 있습니다. 우리의 주요 언어는 터키어입니다. 관리자가 터키어 데이터를 삽입하는 동안 외국어로 된 다른 필드를 비워 두는 것을 원하지 않습니다. 따라서 터키어 데이터 삽입이 "_tr"열로 끝나고 "_en"및 "_de"로 끝나는 외국어 필드에서 자동으로 번역 된 Yandex Translator 데이터를 가져 오려고합니다. enter image description here번역 된 데이터에서 배열 만들기 및 PHP에서 배열 병합

삽입됩니다 이런 내 데이터 구조 :이 같은

$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

기본값으로 열을 지정하지 않고 항상 채워지는 이유는 무엇입니까? 그런 다음 쿼리에서 기본 언어 열이 비어 있으면 기본값으로 돌아갑니다. – Anthony

+0

@Anthony - 'fruit'와 같은 기본 열이 있으면'color'가'fruit_en','color_en'처럼 채워지면서 문제가있는 데이터를 얻습니다. $ row [ "fruit {$ lang-> selected}"]'처럼'$ lang-> selected '를 사용할 때, 프로그램은'fruit_tr'를 검색하기 때문에 그렇지 않습니다. 반면에 이와 같은 실질적인 이익 코딩은 없습니다. –

답변

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 키 앞에 놓을 수 있습니다).

+0

고맙습니다. 이제 나는 주목했다. 문제가 발생했을 때 좋은 해결책입니다. –