2012-06-25 25 views
28

Mam naprawdę problem z przełamaniem umysłu.Localizable.strings nie działa w systemie iOS

Utworzono plik Localizable.strings w XCode, a następnie w 2 językach.

Napełniłem te pliki tłumaczeniami językowymi, wykonałem kompilację/wyczyściłem, a następnie nową kompilację, ale w moim projekcie nie można znaleźć ciągów lokalizacji. Gdy próbuję coś takiego:

self.title = NSLocalizedString(@"HEAD", nil); 

tylko „głowa” zamiast tłumaczeniu pojawia się w symulatorze urządzenia.

To jest moja hierarchia projektu:

project hierarchy

I to jest zawartość pliku lokalizacyjnego angielskiej: enter image description here

Jakieś pomysły?

+1

Ten [Odpowiedź] (http://stackoverflow.com/a/8851669/384808) do podobnych pytanie może pomóc. –

+0

@BrianDriscoll Dzięki, ale to nie pomogło. – jbssm

+0

Czy mogę zobaczyć zawartość pliku localizable.strings? – CodaFi

Odpowiedz

61

Sam znalazłem odpowiedź.

Oprócz czyszczenia i budowy projektu ponownie i wszystko, co opisałem powyżej. Musisz również usunąć aplikację z symulatora iPhone'a, a następnie skompilować ją ponownie! Po tym działa idealnie.

Dyskusja o co proste jabłko ...

+4

Czy to jest tylko problem dla symulatora, czy też użytkownicy w sklepie App Store będą musieli usunąć aplikację, aby nowy język działał? Dzięki. – geekinit

+0

@geekinit Nie testowałem aplikacji na fizycznym urządzeniu, więc nie znam odpowiedzi na to pytanie. Chciałbym poznać odpowiedź, jeśli jest to trudne. – jbssm

+0

Dzięki za to. Usunięcie aplikacji, wyczyszczenie i ponowne jej zainstalowanie sprawdziło się. –

3

@ rozwiązania jbssm za roboty, ale lepszym sposobem (upewniając się, że zasób będzie utrzymać aktualizacją bez czyszczenia i usuwania za każdym razem) będzie dodać niestandardowy skrypt fazy kompilacji zmienia czas dostępu pliku Localizable.bundle.

Jak opisano w https://stackoverflow.com/a/19274844/414037

1

Znalazłem 1 odpowiedzieć sam.

Upewnij się, że wszystkie wartości mają punkt końcowy z; W przeciwnym razie nie działa.

+4

Twój projekt nie skompiluje się, gdy istnieje znak ";" brakuje – Jasper

+0

Ta odpowiedź jest poprawna dla tych, którzy używają scenorysów lokalizacji. Jeśli masz brakujące ';' w swoich lokalizacjach scenorysów, projekt skompiluje dobrze, ale nie załaduje lokalizacji w czasie wykonywania.Jednak jeśli używasz localizable.strings, spowoduje to błąd, jeśli brakuje ';' – sleepwalkerfx

4

Upewnij się, że masz Localizable.strings w fazie budowy, skopiuj zasoby pakietu.

+0

Właściwie to mi brakowało, dzięki! to powinno być przegłosowane –

18

mieć pewność, że:

  1. Plik nazywa się: "Localizable.strings".
  2. "Localizable.strings" należy do celu, z którym masz do czynienia.
+2

Dzięki :) To rozwiązało mój problem. Miał plik o nazwie Lozalizable.strings. Nie zauważylibyśmy tego bez twojego postu! –

+3

I LOL'd na "Lozalizable" –

+0

Tak, upewnij się, że nazwa pliku NIE JEST "Localization.string", miałem ten sam problem i po zmianie go na "Localizable.string" działało dobrze :) –

4

Sprawdź nazwę pliku, jeśli pierwsza litera jest Wielkie Localizable.strings

0

W moim przypadku, mój plik Localizable.strings nie został prawidłowo sformatowany, ze względu na pewne pozostały tekst. Kompilator nie skarżył się, ale wszystkie ciągi po nielegalnej sekcji pliku zostały zignorowane.Mój plik wyglądał mniej więcej tak:

"Key1" = "String1";

  • Łańcuch

  • Łańcuch

  • Łańcuch

nitce ",

"klucz 2"= "String2";

Upewnij się więc, że ręcznie sprawdzasz wszystkie Localizable.strings, które nie są przetwarzane poprawnie. Nie można ufać kompilatorowi, aby wychwycić wszystkie błędy formatowania.

+1

Got to samo błąd. Użyj następującej komendy w terminalu, aby znaleźć linię: plutil -lint Kusan

+0

Świetna sztuczka, dzięki @Kusan! – phatmann

7

Kilka sprawdza:

  1. upewnić się, że nazwa pliku jest dokładnie Localizable.strings i jest wliczone w celu
  2. Każdy łańcuch jest zakończony z ;
  3. Każdy łańcuch jest dwukrotnie cytowany z "
  4. Komentarze rozpoczyna się od // (NOT #)
+0

Dzięki za wszystkie potwierdzenia – Esha

0

Moje dwa centy za lokalizację. Zmodyfikowałem pliki lokalizacji, dodałem je i usunąłem, a projekt został usunięty z wielu aktualizacji Xcode. Później okazuje się, że z wyjątkiem angielskiego żadna z lokalizacji nie działa.

Problem polegał na tym, że muszę mieć lokalizację base, muszę zaznaczyć bazę po prawej stronie, kiedy to zrobiłem, a plik w lewej dodano i inne tłumaczenie pojawi się w aplikacji. Na pewno mają tam za sznurki ...

enter image description here

Powiązane problemy