2012-03-13 3 views
0

Constants.h은 내 응용 프로그램에 사용되는 모든 문자열을 가지고 있습니다.Constants.h 파일에 언어 지원을 추가하는 방법은 무엇입니까?

#define kGuideTitle @"Guide" 
#define kSeatingTitle @"Seating" 
#define kNotesTitle @"Notes" 
#define kQuestionsTitle @"Questionnaire" 
#define kTimelineTitle @"Timeline" 
#define kMessagesTitle @"Messages" 

이제 여러 언어 (5 개 언어)를 지원하려면 해당 파일을 현지화해야 할 때가 있습니다.

내가 지원해야하는 각 언어에 대한 번역이 있습니다.

그래서 관리자의 Constants.h 파일에 대한 lanugage 지원을 추가했습니다. 그리고 Xcode는 각 언어에 대해 Constants.h 파일을 만들었습니다.

그런 다음에 언어 별 파일의 내용을 편집했습니다.

Constants.h(Dutch) 

#define kGuideTitle @"Leitfaden" 
#define kSeatingTitle @"Sitzplan" 
#define kNotesTitle @"Notizen" 
#define kQuestionsTitle @"Fragebogen" 
#define kTimelineTitle @"Zeitlinie" 
#define kMessagesTitle @"Nachrichten" 

하지만 시뮬레이터의 코드를 실행할 때 (시뮬레이터 언어는 네덜란드어로 설정되었다), 나는 모든 응용 프로그램을 통해 텍스트의 영어 버전을보고하고있다. 왜 그래야만하지?

모든 파일을 현지화 할 수 있습니까? 아니면 localizable.strings 파일 만 현지화 할 수 있습니까?

(모든 것을 localizable.strings 파일로 바꾸는 작업을 다시하고 싶지 않습니다.)

아무도 도와 줄 수 있습니까?

대단히 감사합니다.

+1

네덜란드어입니까? deutsch (german) –

답변

2

이렇게하면 안됩니다. A #define은 코드가 컴파일러와 충돌하기 전의 프로세서 전 단계에서 대체됩니다. 즉, 한 세트의 언어 만 "컴파일"됩니다. 지역화 된 문자열을 사용해야합니다.

+0

처럼 보입니다. 재 작업을 완전히 피할 방법이 없습니까? – Selvin

+0

아니요. 지역화하려는 경우 전체 로컬라이제이션 기술을 활용할 수 있습니다 (참고 : 이전 프로세서 단계에서는 수행 할 수 없으며 런타임에 완료해야합니다.) 또는 Apple에서 제공 한 기술을 사용할 수도 있습니다 . – mattjgalloway

+0

좋아 .. 많이 고마워 ... – Selvin

0

이 코드는 컴파일 된 코드이므로 .h 개의 파일을 사용하면 런타임에 언어를 변경할 수 없습니다.

관련 문제