Zlokalizowałem część mojej aplikacji, tworząc dla niej storyboard base.lproj i 3 ciągi znaków. To było miesiąc temu, a potem dodałem nowy kontroler widoku do aplikacji, ale przyciski i etykiety tego kontrolera nie pojawiają się w plikach łańcuchowych
Czy to możliwe, aby zaktualizować ten 3 ciąg znaków dołączony do scenorysu, czy muszę programowo dodać nowe tłumaczenia ciągów przy użyciu NSLocalizableString i Localizable.strings?
Odpowiedzi:
Istnieją dwie opcje:
opcja 1
Xcode może „ponownie załadować” plik, konwertując go na typ pliku [Konstruktor interfejsów Cocoa Touch Storyboard] lub typ pliku [Ciągi lokalizowalne] .
Opcja 2
Użyj ibtool, aby wyodrębnić ciągi w swojej serii ujęć.
Otwórz aplikację Terminal
Znajdź katalog Base.lproj
Użyj tej linii, aby wyodrębnić ciągi:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
Po wyodrębnieniu ciągów przez ibtool do file_name.strings, możesz skopiować i wkleić go do oryginalnego pliku .strings
Odwiedź, aby uzyskać więcej informacji: https://conyac.cc/business/columns/localization_guide_ios
źródło
Sprawdź BartyCrouch , doskonale rozwiązuje Twój problem. Jest to również oprogramowanie typu open source , aktywnie utrzymywane i można je łatwo zainstalować i zintegrować z projektem.
Zainstaluj BartyCrouch przez Homebrew :
Możesz też zainstalować go za pomocą mennicy :
Stopniowo aktualizuj swoje pliki Storyboard / XIBs Strings:
To zrobi dokładnie to, czego szukałeś.
W celu utrzymania swoich obrazkowa / XIBs Struny pliki aktualizowane w miarę upływu czasu Gorąco polecam dodanie skryptu budowlanej (instrukcje jak dodać skrypt kompilacji tutaj ):
Oprócz stopniowej aktualizacji plików ciągów scenorysów / XIB-ów zapewni to również, że Twoje
Localizable.strings
pliki będą aktualizowane o nowo dodane klucze w kodzie przy użyciuNSLocalizedString
i pokażą ostrzeżenia o zduplikowanych kluczach lub pustych wartościach.Koniecznie sprawdź BartyCrouch na GitHub lub w tym szczegółowym artykule, aby uzyskać dodatkowe informacje.
źródło
Możesz ręcznie dodać klucz do pliku lokalizacji. Możesz znaleźć kluczowy obiekt, wybierając go w edytorze scenariuszy. Rzućmy okiem na
Object-ID
inspektora tożsamości. To wygląda jak"nwc-b2-19c"
W aktualizacji lokalizacji lub dodaj tłumaczenie. Na przykład :
źródło
Ten nie jest dla wszystkich, ale nie wymaga żadnych dodatkowych narzędzi w terminalu i jest łatwy do drobnych ręcznych zmian. (Nie bierz tego pod uwagę, jeśli chcesz zautomatyzować proces).
Krok 0: Konfiguracja języka scenorysu
Ten krok jest wykonywany tylko raz.
Teraz, gdy dodam coś do scenorysu, wykonuję następujące czynności
Krok 1: dodaj plik ciągów lokalizowalnych w języku angielskim
zaznacz angielski element zamówienia.
Spowoduje to utworzenie całkowicie nowego, zlokalizowanego w języku angielskim pliku ciągów ze wszystkimi wierszami
Krok 2: skopiuj nowe elementy zamówienia do innych plików językowych
i przetłumacz je
Krok 3: usuń zaznaczenie z języka angielskiego, usuń odpowiedni zlokalizowany plik ciągów
plik był potrzebny tylko do uzyskania nowych elementów zamówienia
Jest to łatwy i szybki proces, wszystko odbywa się w edytorze scenariuszy
Edytować:
Ten proces działa bardzo dobrze w przypadku małych scenariuszy. Na przykład mam projekt oparty na kartach i mam scenorys dla każdej karty.
Wyszukaj „odniesienie do scenorysu”, aby znaleźć samouczki.
Dobry przykład: odniesienie do scenorysu w Xcode, gdzie powinniśmy go użyć?
Tak więc każda mała storyboard ma tylko kilka ciągów do zlokalizowania.
źródło
Wreszcie moim rozwiązaniem było (podstawowe, ale skuteczne) skopiowanie poprzednich tłumaczeń i wklejenie ich w nowym pliku utworzonym przez odznaczenie i zaznaczenie pola Język lokalizacji.
Byłoby to przydatne w niektórych przypadkach, takich jak mój, gdy trzeba zmienić tylko jeden lub dwa teksty.
źródło
Myślę, że najlepszym sposobem jest użycie wbudowanych lokalizacji eksportu / importu:
PS Jeśli nie chcesz edytować w edytorze XLIFF i pominąłeś krok 3, XCode nie mógł zapisać nowych ciągów. W takim przypadku otwórz .xliff w edytorze XLIFF, zapisz ponownie bez zmian i zaimportuj nowy plik.
źródło
/* Class = "UILabel"; text = "a basic text"; ObjectID = "HFW-aN-MTb"; */
, ale nowa etykieta NIE jest tworzona w pliku Main.strings. Następnie edytowałem plik .xliff, aby dodać tłumaczenie nowej etykiety. Zaimportowałem go ponownie. Nowa etykieta jest teraz wstawiona do pliku Main.strings.Po kliknięciu w storyboardzie, na przykład Main.storyboard ... Po prawej stronie możesz zobaczyć menu lokalizacji (patrz załączony obraz). Jeśli odznaczysz i ponownie zaznaczysz język, plik zostanie wygenerowany ponownie. Zwykle więc kopiuję zawartość, generuję plik ponownie, a następnie wklejam treść, którą skopiowałem i już zostałem przetłumaczony.
W ten sposób aktualizuję słownik.
źródło
Mam ogromną scenorys z wieloma ciągami. Dwa języki bazowe angielski i inny arabski. Zadanie polegało na dodaniu niektórych pól i etykiet do scenorysu oraz dodaniu ich lokalizacji bez żadnych skryptów i NSLocalizableStrings.
Dla mnie pomogłem następnie:
Po pierwsze : upewnij się, że masz git, aby zapobiec nieoczekiwanym zmianom.
Editor
->Export For Localization...
. Zapisz gdzieś plik ar.xliff .źródło
Istnieje
aplikacjanarzędzia wiersza polecenia firmy Apple o nazwie AppleGlot, która obsługuje przyrostową lokalizację. Jeszcze tego nie próbowałem, ale wygląda dokładnie tak, jak narzędzie, którego szukałeś (jakiś czas temu).źródło
appleglot
Narzędzie pracuje z końcowych wiązek aplikacyjnych. Jest to zupełnie inne podejście do aplikacji tłumaczeniowych.Oto skrypt do wyciągania ciągów z scenorysów i Xibów i łączenia ich z istniejącymi tłumaczeniami.
Aby uruchomić skrypt automatycznie podczas budowania projektu, umieść go w katalogu głównym projektu i dodaj fazę Uruchom skrypt z następującym wierszem do docelowych faz budowy w ustawieniach projektu.
Lub możesz uruchomić skrypt na terminalu ręcznie, kiedy chcesz.
Skrypt działa,
ibtool
gdy Tha Leang odpowiedziała. Działa również wgenstrings
celu wyodrębnienia i scalenia ciągów oznaczonychNSLocalizedString
w kodzie źródłowym. Skrypt jest oparty na skrypcie w tym poście , który łączy ciągi po uruchomieniugenstrings
.źródło
Najłatwiejszym i bardzo mniej ryzykownym podejściem jest po prostu skopiowanie identyfikatora obiektu z scenorysu i dodanie nowego klucza do klucza w zlokalizowanym pliku, jak na poniższym przykładzie:
1: Skopiuj identyfikator obiektu jak poniżej z scenorysu dla komponentu:
2: Dodaj nowy klucz w zlokalizowanym pliku, jak poniżej:
Uwaga: Jest to bardzo mniej ryzykowne podejście, jeśli chcesz zaktualizować tylko kilka składników, w przeciwnym razie możesz odtworzyć zlokalizowany plik dla scenorysu.
źródło
Xlifftool jest dostępny jako aplikacja na komputery Mac i działa dobrze. Pokazuje wszystkie możliwe do przetłumaczenia ciągi i obiekty z info.plist, ciągi lokalizowalne i scenorys.
Pobierz tutaj dla systemu Mac: https://itunes.apple.com/lv/app/xlifftool/id1074282695?mt=12
Krok 1: w Xcode wybierz folder projektu w nawigatorze projektu. Następnie wybierz Edytor / Eksport do lokalizacji ...
Twoje ciągi do tłumaczenia zostaną zawarte w pliku xliff w języku wybranym do lokalizacji w Xcode.
Krok 2: Otwórz ten plik za pomocą Xlifftoola i przetłumacz lub zaktualizuj swoje tłumaczenia, które zostały wykonane wcześniej.
Krok 3: Następnie prześlij z powrotem do projektu za pomocą edytora / importu lokalizacji ...
źródło
To jest mój prosty sposób na aktualizację nowego tekstu z storyboardu lub xib na ciąg lokalizacji
1- użyj tego skryptu http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2- wybierz ciąg lokalizacji , który chcesz zaktualizować, i przełącz ciąg języka z „Ciąg lokalizacji” na „scenariusz konstruktora interfejsów”
3- przełącz go z powrotem :)
Gotowe.
źródło
Opcja 1
Xcode może „przeładować” plik, konwertując go na
[Interface Builder Cocoa Touch Storyboard]
typ pliku lub[Localizable Strings]
typ pliku.Wybierz podstawowy plik scenorysu z Nawigatora projektu Znajdź sekcję Lokalizacja w Inspektorze plików . Jeśli Twój plik jest obecnie
[Localizable Strings]
, zmień go na[Interface Builder Cocoa Touch Storyboard]
lub odwrotnie.Xcode powinien przekonwertować storyboard do bieżącej wersji, zachowując starania związane z lokalizacją. Tutaj możesz zmienić plik z powrotem na oryginalny typ pliku, jeśli chcesz.
Opcja 2
Użyj,
ibtool
aby wyodrębnić ciągi z planszy.Otwórz aplikację Terminal
Znajdź swój
Base.lproj
katalogUżyj tego wiersza, aby wyodrębnić ciągi:
Po wyodrębnieniu ciągów przez ibtool
file_name.strings
możesz skopiować i wkleić go do oryginalnego.strings
pliku.źródło