2015-05-11 8 views
5

Xcode nie może wygenerować pliku lokalizacji xliff z błędem lokalizacja nie odczytała pliku ciągów. Sprawdź dziennik systemu, aby uzyskać więcej informacji:. Czy ktoś wie, gdzie znajdę te logi? To Xcode 6.3.2 GM, ale próbowałem także wersji 6.3.1. Z 6.3.1. błąd dotyczy określonego pliku, ale wewnątrz tego pliku nie jest niczym niezwykłym. Ponadto próbowałem usunąć ten plik, ale pojawia się ten sam błąd, chociaż plik już tam nie ma. Czy ktoś ma pomysł, dlaczego?Lokalizacja Xcode 6 nie odczytała pliku ciągów znaków

+0

Mam ten sam problem, nawet po aktualizacji do 6.3.2 (6D2105). To działało całkiem dobrze ... – leonard

+0

FYI: Sprawdź to https://openradar.appspot.com/21056545 – skywinder

Odpowiedz

5

W końcu rozwiązałem to przez usunięcie wszystkich makr NSLocalizedString z kodu, ponieważ eksporter Xliff sprawdza kod dla nich i na podstawie wyników szuka plików ciągów. Dziwne jest to, że skanuje również komentarze, więc po prostu skomentuj niechciane makra NSLocalizedString nie pomogą.

+0

To, że skanuje skomentowany tekst, nie jest takie dziwne. Po prostu czyta wszystkie pliki dla niektórych dopasowań wyrażenia regularnego. Regex jest całkowicie nieświadomy "kodu" jako "ja" lub logiki stojącej za nim. –

+0

Nareszcie! dzięki ... w ogóle się nie spodziewałem ... dziękuję ... tyle czasu spędziłem na tym ... Chciałbym móc głosować 3000 razy – Yitzchak

6

Does anyone know where do I find these logs?

Otwórz aplikację Console. I wyszukaj na przykład "ciągi znaków" system.log.

Does anyone idea why?

Jest tam kilka problemów, które powodują ten błąd:

  1. Empty Localizable.strings pliku.

Rozwiązanie: Wystarczy dodać komentarz

/** no localizable strings **/ 

do tego pliku i problem zniknął.

  1. Problem 2-gi w symbolu ucieczki: \

Rozwiązanie: Usuń je i dowiedzieć się czegoś o swoich znaków specjalnych. I prawdopodobnie twój proces eksportu zakończy się bezbłędnie.


P.S.

+0

Pusty plik był winowajcą dla mnie. Dodanie tego komentarza i ponowne zaimportowanie go poprawiły. – ckbhodge

1

miałem ten sam problem, gdy próbuję użyć NSLocalizedString z własnym NSBundle określony. Mam stałe to po prostu redefinicji funkcji NSLocalizedString tak:

public func NSLocalizedString(key: String, tableName: String? = nil, bundle: NSBundle = NSBundle.mainBundle(), value: String = "", comment: String) -> String 
{ 
    return yourBundleHere.localizedStringForKey(key, value: value, table: tableName) 
} 

Wymień yourBundleHere z NSBundle.mainBundle() lub co kiedykolwiek chcesz.

4
Miałem podobny problem. Sprawdź w dzienniku systemowym wpis "Xcode: [MT] DVTAssertions". (Applciations-> Utilities-> Console.app)

Na przykład:

5/13/16 3:08:24.675 PM Xcode[15546]: [MT] DVTAssertions: Warning in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-10188.1/IDEFoundation/Localization/IDELocalizationWork.m:355 

Szczegóły: Nie można odczytać pliku strings „controllers/FindMyPhone/fr.lproj/TILMarkPhoneLostMessageViewController.strings”, będący podstawą błędach:

Komentarze parser:

{ 
    "OGQ-Dm-sLB.text" = "Au secours, je suis perdu**U00A0**! Veuillez appeler mon propri\U00e9taire."; 
    "reH-FM-KQF.text" = "Envoyez un message \U00e0 la personne qui trouve votre t\U00e9l\U00e9phoneU00A0; celui-ci s\U2019affiche sur l\U2019\U00e9cran de verrouillage, accompagn\U00e9 de votre num\U00e9ro de t\U00e9l\U00e9phone. "; 
} 

nie pasuje:

{ 
    "OGQ-Dm-sLB.text" = "Au secours, je suis perdu\U00a0! Veuillez appeler mon propri\U00e9taire."; 
    "reH-FM-KQF.text" = "Envoyez un message \U00e0 la personne qui trouve votre t\U00e9l\U00e9phone\U00a0; celui-ci s\U2019affiche sur l\U2019\U00e9cran de verrouillage, accompagn\U00e9 de votre num\U00e9ro de t\U00e9l\U00e9phone. "; 
} 

obiektu: Metoda: -work Temat: {= numer 1, name = główny }

Proszę zgłosić błąd na http://bugreport.apple.com tym komunikatem ostrzegawczym i wszelkimi przydatnymi informacjami, które możesz podać.

Jak widać w moim przypadku problem był związany z postacią unicode "NO-BREAK SPACE" (U + 00A0). Podczas eksportowania do lokalizacji xcode oczekuje, że kod będzie \\U00A0, ale w moim pliku tekstowym jest \U00A0 (w przeciwnym razie aplikacja wyświetla znaki zamiast spacji ...). Brzmi jak błąd w xcode do mnie. Jeśli chcesz szybkiego i brudnego rozwiązania, powiedziałbym, szukaj w całym projekcie dla \U00A0 i zamień go na \\U00A0 tylko na eksport (a gdy już otrzymasz xliff cofnij te zmiany ponownie).

dziennika systemu:

System log

+0

To tak naprawdę nie odpowiada na pytanie. Jeśli masz inne pytanie, możesz je zadać, klikając [Zadaj pytanie] (http://stackoverflow.com/questions/ask). Możesz także [dodać nagrodę] (http://stackoverflow.com/help/privileges/set-bounties), aby zwrócić więcej uwagi na to pytanie, gdy już masz wystarczającą [reputację] (http://stackoverflow.com/help/ whats-reputation). - [Z recenzji] (/ opinia/niskiej jakości-posts/12347964) –

+1

@Wongzigii tak naprawdę wyjaśnia, jak rozwiązać problem ... więc można go uznać za rozwiązanie (przy okazji dla mnie zadziałało ...) – MatterGoal

+1

Ucieczka cięcie działało dla mnie (więc dwie kreski, a nie trzy: \\ U00a0). (Odpowiada również na pytanie zadane, nie jest to problem osoby pytającej, ale objawy są takie same, więc jest to pytanie, które będą szukać użytkownicy, którzy mają problem z unikaniem znaków Unicode.) – LoriHC