2013-04-18 2 views
0

기기에서 사용할 수있는 언어 목록에없는 언어를 지원해야하지만 지역 형식은 지원해야하는 앱을 작성하고 있습니다. 나는 "어제"뿐만 아니라 일의 이름을 현지화하고 싶습니다. 문제는 그 날 (월요일, ...)은 NSLocale을 사용하여 가져와 모든 장치에서 작동하지만 "어제"와 같은 단어는 40 개 정도의 언어로 현지화되어야한다는 것입니다. XCode를 사용하여 원하는 지역에 맞게 지역화 할 수 있지만 장치는 표준 언어 (내 경우 덴마크어)를 사용합니다.비표준 로케일 용 응용 프로그램 현지화

결과는 "어제"가 영어로 표시됩니다 (특정 지역에 대해 현지화 할 수 없기 때문에 kamba-Kenya라고 말합니다). 그러나 요일 이름은 잘 번역됩니다. 하드 코딩을 제외하고 다른 방법이 있습니까?

답변

2

iOS 지원 로케일에 대해 이러한 데이터를 하드 코딩해야한다고 생각합니다. 모든 로케일에 대해 하드 코딩을 피할 수있게하려면 약간의 노력이 필요합니다. 당신은 같은 단어를 포함하는 CLDR 용어의 카테고리 인 (이 상대 날짜 이름에 대한 번역 때문에 이러한 문자열을 지역화 할 필요가 없습니다,

아이폰 OS는 크게 CLDR에서 로케일에 의존하는 데이터를 사용하여 로케일이 지원됩니다 " 오늘 ","어제 "및"내일 ")은 로캘 데이터의 일부로 planned입니다. 또한, 나는 NSDateFormatter 대부분의 아마 당신이 그 지원되는 로케일을 위해 필요한 당신을 줄 setDoesRelativeDateFormattingdoesRelativeDateFormatting라는 두 가지 속성을 가지고 있음을 발견

<fields> 
    ... 
    <field type='day'> 
    <displayName>Day</displayName> 
    <relative type='-1'>Yesterday</relative> 
    <relative type='0'>Today</relative> 
    <relative type='1'>Tomorrow</relative> 
    </field> 
    ... 
    </fields> 
    <fields> 
    ... 
    <field type='day'> 
    <displayName>Tag</displayName> 
    <relative type='-2'>Vorgestern</relative> 
    <relative type='-1'>Gestern</relative> 
    <relative type='0'>Heute</relative> 
    <relative type='1'>Morgen</relative> 
    <relative type='2'>Übermorgen</relative> 
    </field> 
    ... 
    </fields> 

: 영어에 비해 독일어이 데이터를 보여주는 example. 나는 iOS 개발자가 아니므로 확실하게 말할 수는 없다.

data for ka-KE은 CLDR에서 사용할 수 있지만이 로캘은 아직 iOS에서 지원되지 않으므로 농구를 통과해야 작동합니다. 예 : this answer에 자세히 설명 된 iOS 용 ICU을 빌드하거나 사용 가능한 정적 빌드 here을 사용하십시오.

+1

안녕하세요. 감사합니다. ICU FAQ에 정적 빌드를 추가해야합니다. –

관련 문제