2017-02-22 3 views
2

안녕하세요, 저는 reactJS + Flux Project에서 일하고 있습니다. 제 웹 사이트를 다중 언어로 변환하려고합니다. 이미 내 API에서 가능한 모든 가치에 대한 사전을 가지고 있습니다. API의 실제 값을 사전 값으로 바꾸고 싶습니다. API에서API 데이터를 로컬 langugae 데이터로 변환하는 방법은 무엇입니까?

내가 무엇입니까 다음과 같은 형식으로 데이터 : 예를 들어

나는 모든 변경하려는

data= { 
hindi: { 
"country" : { 
    "India" : "भारत" 
}, 
state: { 
     "Andaman & Nicobar Islands": "अंदमान अँड निकोबार आयलँड्स", 
     "Andhra Pradesh": "आंध्र प्रदेश", 
     "Arunachal Pradesh": "अरुणाचल प्रदेश", 
     "Assam": "आसाम", 
     "Bihar": "बिहार", 
     "Maharashtra": "महाराष्ट्र" 
}, 
"city" :{ 
    "Mumbai" : "मुंबई" 
} 
} 
} 

: 이미 같은 모든 값을 가지고 내 힌디어 사전에

data = { 
basic: { 
    name: "ajay kumar", 
    country: "India", 
    State: "Maharashtra", 
    City: "Mumbai" 
} 
} 

주어진 사전에서 내 값의. 도움이 될 것입니다.

감사합니다. 나는 그에서 단어를 매핑 기능은, 내가 Object.keys(object)data.basic에서 키를 추출 할 수없는 경우

{englishWord1: hindiWord1, 
.... 
englishWordn: hindiWordn} 

그럼 내가 정의하는 것입니다 : 모든

답변

0

먼저 귀하의 사전이 간단 할 수 없도록 귀하의 개체에있는 것들을 가진 사전 (translate(section, word, dictionary) => [section, translatedWord]). Object.keys(object)을 사용하면 사전에있는 섹션 (Country, State ecc)에 해당하는 키 배열을 얻고 map을 사용하면 translate(..)을 사용하는 di 배열의 각 요소를 변환하고 번역 된 단어 배열 [[section1:translatedWord1],...[sectionn,translatedWordn]]을 얻을 수 있습니다. 그런 다음 배열을 취하여 객체 (arrayToObject([])=>{})를 반환하는 함수를 사용하면 번역 된 객체를 갖게됩니다.

//This is your dictionary 
 
engToHindi = { 
 
    Country : { 
 
    India: 'valueIndia', 
 
    }, 
 
    State: { 
 
    Maharashtra: 'valueMaharashtra', 
 
    }, 
 
    City :{ 
 
    Mumbai: 'valueMumbai', 
 
    } 
 
} 
 

 
data = { 
 
basic: { 
 
    Name: "ajay kumar", 
 
    Country: "India", 
 
    State: "Maharashtra", 
 
    City: "Mumbai" 
 
} 
 
} 
 

 
function arrayToObject(array){ 
 
    object = {} 
 
    array.map(x => {object[x[0]] = x[1]}); 
 
    return object; 
 
} 
 

 

 
function translate(section, word, dictionary){ 
 
    // If the section doesn't exist do not transalate 
 
    if (dictionary[section] === undefined){ 
 
    return [section, word]; 
 
    } 
 
    translatedWord = dictionary[section][word]; 
 
    return [section, translatedWord]; 
 
} 
 

 
arrayToTransform = Object.keys(data.basic).map(key => translate(key, data.basic[key], engToHindi)) 
 
console.log(arrayToTransform) 
 

 
transformed = arrayToObject(arrayToTransform); 
 
console.log(transformed);

는 섹션으로 나누어 사전이 필요하다는 것을 확인하십시오.