Jak zapewne wiesz, iOS 8 wymaga klucza NSLocationWhenInUseUsageDescription do korzystania z lokalizacji użytkownika. Dodałem ten klucz i kilka ogólnych informacji do mojej listy informacji.
Jak mogę użyć łańcucha tłumaczenia w pliku plist?
-- Aktualizacja --
Mam już ciąg lokalizowalny. Zastanawiam się tylko, czy mogę użyć czegoś takiego jak NSLocalizedString (MYSTRING, zero) w łańcuchu plist. Wiem, że mogę utworzyć wiele plików info.plist do lokalizacji, ale zastanawiałem się, czy może być łatwiejszy sposób.
Odpowiedzi:
Należy użyć
InfoPlist.strings
pliku do zlokalizowania wartościInfo.plist
. Aby to zrobić, przejdź doFile->New->File
, wybierzStrings File
wResource
zakładceiOS
, nazwij goInfoPlist
i utwórz. Otwórz i wstawInfo.plist
wartości, które chcesz zlokalizować, takie jak:Teraz możesz zlokalizować
InfoPlist.strings
plik z tłumaczeniem. Powodzenia!EDYTOWAĆ:
wybierz opcje lokalizacji lub włącz lokalizację, jeśli to konieczne,
powinieneś zobaczyć plik również w edytorze po lewej stronie.
EDYTOWAĆ:
Oto oficjalna dokumentacja
Info.plist
lokalizacji kluczy.Podziękowania dla Marco , dziękuję za uwzględnienie zdjęć w tej odpowiedzi!
źródło
Wszystkie powyższe nie działały dla mnie (XCode 7.3), więc przeczytałem referencje Apple o tym, jak to zrobić, i jest to o wiele prostsze niż opisano powyżej. Według Apple:
W związku z tym utworzyłem plik ciągu o nazwie InfoPlist.strings i umieściłem go w folderze xx.lproj w języku „xx” (i dodałem go do projektu przy użyciu Plik-> Dodaj pliki do ...). Otóż to. Nie ma potrzeby używania klucza „Lokalizowane zasoby mogą być mieszane” = TAK i nie ma potrzeby używania InfoPlist.strings w base.lproj lub en.lproj.
Aplikacja używa wartości klucza Info.plist jako wartości domyślnej, jeśli nie może znaleźć klucza w pliku specyficznym dla języka. Dlatego umieściłem moją angielską wartość w pliku Info.plist, a przetłumaczony w pliku specyficznym dla języka, przetestowałem i wszystko działa.
W szczególności nie ma potrzeby lokalizowania pliku InfoPlist.strings (który tworzy wersję pliku w base.lproj, en.lroj i xx.lproj), aw moim przypadku przejście w ten sposób nie zadziałało.
źródło
Jeśli coś nie działa, upewnij się, że dodałeś:
„Zlokalizowane zasoby można mieszać” = TAK
do info.plist. W moim przypadku pliki InfoPlist.strings zostały po prostu zignorowane.
źródło
Porady
Pamiętaj, że iOS Simulator domyślnie wykorzystuje język systemu. Zmień język (i region) również w ustawieniach symulatora systemu iOS, aby przetestować swoje tłumaczenia.
Ciąg lokalizacji (patrz tutaj dokumenty Apple ) powinien być
i nie (z cytatem „...”)
źródło
"NSLocationWhenInUseUsageDescription"="description"
jest poprawny). Może być z lub bez.Gorąco polecam przeczytanie przewodników Apple i przejrzenie wymienionych tutaj zasobów WWDC: tematy internacjonalizacji i lokalizacji
Aby dokładnie odpowiedzieć na twoje pytanie, kiedy dodajesz nowy język do swojego projektu , masz możliwość wyboru, które pliki InfoPlist mają zostać uwzględnione (jeśli masz wiele obiektów docelowych, będziesz mieć wiele plików Info plist). Wszystko, co musisz zrobić, aby wyświetlić poniższy ekran, to nacisnąć + w obszarze Lokalizacje i wybrać nowy język, aby dodać obsługę.
Po dodaniu utworzy niezbędne pliki ciągów w odpowiednich katalogach lproj dla danego języka.
--EDYTOWAĆ--
Dla jasności iOS zamieni ciąg pliku Plist na podstawie aktualnie wybranego języka użytkownika, używając klucza wpisu plist jako klucza w zlokalizowanym pliku ciągów.
źródło
Krok po kroku zlokalizuj Info.plist:
Save As
polu napisz TYLKO InfoPlist (kapitał „I” i kapitał „P”)"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";
"NSLocationAlwaysUsageDescription" = "blabla2";
To wszystko działa i zlokalizowałeś swój plik info.plist!
źródło
Dla każdego, kto ma problem z nieuwzględnieniem info.plist podczas próby dodania lokalizacji, jak w Xcode 9.
Musisz ustawić lokalizację info.plist, wchodząc w nią i klikając przycisk lokalizowania w inspektorze plików, jak pokazano poniżej.
Info.plist zostanie wówczas dołączony do zasobów pliku, gdy przejdziesz do dodawania nowych lokalizacji.
źródło
Jak mówi RGML, możesz utworzyć InfoPlist.strings, zlokalizować go, a następnie dodać swój klucz i wartość w następujący sposób: "NSLocationWhenInUseUsageDescription" = "Pomoc, aby mnie zlokalizować!";
Dodaje klucz do twojej info.plist dla określonego języka.
źródło
W moim przypadku wszystko zostało poprawnie skonfigurowane, ale nadal nie znaleziono pliku InfoPlist.strings.
Jedyną rzeczą, która naprawdę działała, było ponowne usunięcie i dodanie plików InfoPlist.strings do projektu.
źródło
W moim przypadku lokalizacja nie działała z powodu symbolu „-” w nazwie. Przykład: „aero-Info.plist” I zlokalizowane pliki: „aero-InfoPlist.strings” i „aeroInfoPlist.strings” nie działały.
źródło
Podczas używania
InfoPlist.strings
pliku (w XCode należy go umieścić obokInfo.plist
pliku - prawdopodobnie rzeczywista lokalizacja pliku może znajdować się w dowolnym miejscu projektu)), używaj krótkiej nazwy klucza do tłumaczenia.
Próbowałem użyć
Privacy - Camera Usage Description
, ale działa kluczNSCameraUsageDescription
źródło