2016-06-14 5 views
1

내가 화면의 자리 교체하려면 다음 방법을 사용하고 (다중 언어 지원을 제공)을 Movilizer 응용 프로그램을 국산화 제공 : 지역화 MasterDataMovilizer 응용 프로그램에 대한 지역화/멀티 언어 지원

$global:setPlaceholders = function(key) 
{ 
    fieldNames = getMasterdata($masterdata:"localisation", key); 
    fieldNames = fieldNames["data"]; 

    for(entry : fieldNames) 
    { 
     setPlaceholder(concat("%", entry, "%"), fieldNames[entry]); 
    } 
}; 

<answer ... > 
    <text>%KEY%</text> 
</answer> 
<onEnterAssignment> 
    call($global:setPlaceholders)("process1.screen1"); 
</onEnterAssignment> 

<MovilizerRequest ... > 
    <masterdataPoolUpdate pool="localisation"> 
    <update key="InventoryManagement.StartScreen" group="DEFAULT"> 
    <language language="en_us"> 
     <data> 
      <entry name="KEY"> 
       <valstr>Entry</valstr> 
      </entry> 
     </data> 
    </language> 

    <language language="de"> 
     <data> 
      <entry name="KEY"> 
       <valstr>Eingabe</valstr> 
      </entry> 
     </data> 
    </language> 
    </update> 
    </masterdataPoolUpdate> 
</MovilizerRequest> 

더 나은 표준 방법으로 Movilizer 응용 프로그램을 현지화 할 수 있습니까? 지역화 작업 환산

+0

그것은 요구 사항에 조금 따라 달라집니다. 이 접근법은 참가자 등록 중에 사용 된 언어에 따라 다릅니다. 즉석에서 언어를 전환하는 것은 까다로워집니다. 전환이 필요하지 않다면 괜찮습니다. 마스터 데이터 생성에는 기본 언어가 필요합니다. –

답변

2

다른 유용한 방법 :

경우에 잘 언어 전환 스위칭 플라이 언어에

$global:getLocale = function(pool, key) 
    { 
     fieldNames = getMasterdata($masterdata:"localisation", pool); 
     fieldNames = fieldNames["data"]; 

     return fieldNames[key]; 
    }; 
    $global:getLocaleWithReplacement = function(pool, key, replacement) 
    { 
     fieldNames = getMasterdata($masterdata:"localisation", pool); 
     fieldNames = fieldNames["data"]; 
     locale = fieldNames[key]; 
     locale = strReplace(locale, "%1%", replacement); 
     return locale; 
    }; 
    $global:getLocaleWithReplacementArray = function(pool, key, replacement) 
    { 
     fieldNames = getMasterdata($masterdata:"localisation", pool); 
     fieldNames = fieldNames["data"]; 
     locale = fieldNames[key]; 
     for(i : replacement) 
     { 
      placeholder = concat("%", i, "%"); 
      locale = strReplace(locale, placeholder, replacement[i]); 
     } 
     return locale; 
    }; 
    $global:getLocalizedList = function(pool, key) 
    { 
     fieldNames = getMasterdata($masterdata:"localisation", pool); 
     fieldNames = fieldNames["data"]; 

     filterValues = fieldNames[key]; 
     filterValues = strtokenarray(filterValues, ";"); 

     for(i : filterValues) 
     { 
      filter[i] = filterValues[i]; 
     } 
     return filter; 
    }; 

구성 및 동기화를 다시없이이 용액 멀리 아니다 필요 여기에 설명 된 것에서 무엇을 할하는 데 필요한 것은 :

  1. 당신이 키의 데이터 부분에 여러 언어 하위 배열을 가지고 있고 조정하는 방식으로 MasterData을 조정 변수 글로벌 언어를 생성하고 설정 방법에 따라.

메소드 서명을 변경하지 않아도됩니다.

지역화 Movelet 이름은 다음과 같이 작동 :

<nameExpression> 
    call($global:getLocaleWithReplacementArray)("process.movelet", "MOVELET_TITLE", {0 : $global:amount;1 : $global:unit}) 
</nameExpression>