2011-10-25 3 views
5

NSLocalizedString의 모든 호출에는 두 번째 param으로 nil이 있습니다. 왜냐하면 어떤 주석도 사용하지 않기 때문입니다. 그러나 나는 자신을 반복하는 것을 싫어한다. 이제 NSLocalizedString (str, nil)을 호출하는 LSSTRING (str)과 같은 매크로를 정의하는 것이 괜찮 으면 스스로에게 묻습니다. 그렇다면 어떻게해야할까요?Macro for NSLocalizedString

답변

10

하실 수 있습니다. 미리 컴파일 된 헤더에 다음 매크로를 추가하십시오. 즉., {프로젝트 이름} -Prefix.pch 파일

#define LSSTRING(str) NSLocalizedString(str, nil) 
+4

인수가 리터럴 문자열이 아닙니다. ' –

+3

Xcode에서 다음과 같이 찾기/바꾸기를 수행하십시오. 찾기 : LSSTRING \ ((\\ "\ w + \ ") \) 바꾸기 : NSLocalizedString \ (\ 1, \ 1 \) – Damon

2

사용하여 메신저

#define _(format, ...) [[NSBundle mainBundle] localizedStringForKey: [NSString stringWithFormat:@"%@", [NSString stringWithFormat:format, ##__VA_ARGS__]] value:@"" table:nil] 
이 방법의 문제점은 genstrings가 주석에 대한 문자열을 찾을 것으로 기대하고 있다는 것입니다, 그리고 같은 오류를 줄 것이다
+1

첫 번째'stringWithFormat :'이 왜 필요합니까? –