2011-10-25 11 views
5

Wszystkie moje wywołania NSLocalizedString mają zero jako drugi parametr, ponieważ nie używam żadnych komentarzy. Ale nienawidzę się powtarzać. Teraz pytam siebie, czy można zdefiniować makro takie jak LSSTRING (str), które wywołuje NSLocalizedString (str, zero), a jeśli tak, to w jaki sposób?Makro dla NSLocalizedString

Odpowiedz

10

Możesz. Dodaj następujące makro do wstępnie skompilowanego nagłówka. tj. w {Nazwa_projektu} -Prefix.pch pliku

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

Jeden problem z tym podejściem jest to, że genstrings spodziewa się znaleźć ciąg za komentarz i daje błąd jak this: 'Zły wpis w pliku ... (linia = #): Argument nie jest literalnym łańcuchem. –

+3

W Xcode, po prostu znajdź/zamień w ten sposób: Znajdź: LSSTRING \ ((@ \" \ w + \ ") \) Zastąp: NSLocalizedString \ (\ 1, \ 1 \) – Damon

2

im przy

#define _(format, ...) [[NSBundle mainBundle] localizedStringForKey: [NSString stringWithFormat:@"%@", [NSString stringWithFormat:format, ##__VA_ARGS__]] value:@"" table:nil] 
+1

Dlaczego pierwszy' stringWithFormat: '? –