Lokalizacja iOS - Aktualizacja łańcuchów lokalizacyjnych za pomocą nowych łańcuchów
WyszukałemGoogle iPrzepełnienie stosu i nadal nie ma jasnej odpowiedzi w łatwy i zautomatyzowany sposób, ale oto scenariusz:
Mam aplikację z 1000 ciągami zlokalizowanymi w en, fr, de, es, it.Tworzę nową funkcję, która sprawia, że 10 wyraźnie nowychNSLocalizedString()
klawiatura.Chcę tylko, żeby te 10 nowych łańcuchów zostało dołączonych na końcach plików:en.lproj / Localizable.stringsfr.lproj / Localizable.stringses.lproj / Localizable.stringsde.lproj / Localizable.stringsit.lproj / Localizable.stringsgenstrings
pobierze wszystkie 1010 różnych ciągów. To jest ból, ponieważ muszę „ignąć w stogu siana” znaleźć te 10 strun za każdym razem, gdy wykonuję aktualizację.
AKTUALIZACJA 19-SEP-2014 - XCode 6 - Apple wydało wreszcie wsparcie dla eksportu XLIFF i importowania plików .stringsCo nowego w XCode 6? Lokalizacja
Linguan (v1.1.3) Chociaż jest to piękne narzędzie przez większość czasu, zaczyna być narzędziem w innym sensie. Łączy zmiany, ale niektóre łańcuchy nie pasują poprawnie, gdy się łączą, więc za każdym razem, gdy robi Źródła skanowania, tworzy 100 nowych duplikatów kluczy, jak również 10 ciągów, po których jestem, więc robi więcej pracy.
FileMerge Jak sugerowano poniżej, spróbuj wykonać różnicę między starymi a nowymi wersjamigenstrings
pliki wyjściowe. Thegenstrings
wyjście ma łańcuchy uporządkowane alfabetycznie, więc 10 łańcuchów rozproszonych w 1000 oznacza, że istnieje 200 różnic do przejrzenia. nadal dopasowuje/*...*/
i"..." = "..."
i mówiąc, że...
został zaktualizowany. Nie został zaktualizowany, po prostu przeniesiony do nowej lokalizacji w pliku. Coraz bardziej wygląda na to, że będę musiał napisać niestandardowe narzędzie.
MacHG + FileMerge na marginesie, z jakiegoś dziwnego powodu nie lubi robić różnic w repozytorium z roboczą kopią localizable.strings. Zarówno lewy, jak i prawy panel są puste.AKTUALIZACJA: Okazuje się, że wariacje niektórych zestawów zmian są zapisywane jako UTF-16, a niektóre jako UTF-8, co sprawia, że jest w stanie wykonać poprawną różnicę.
Skrypt Bash + FileMerge Napisałem następujący skrypt, aby pomóc utrzymać mój angielski plik referencyjny po każdym dodaniu nowegoNSLocalizedString
wpisy:
#LOCALISATION UPDATE SCRIPT
#
#This will create a temporary copy of the current 'en' reference file then generate the
#latest reference file using the 'genstrings' tool. Finally forcing FileMerge to launch
#and diff the changes.
#
#Last Updated: 2014-JAN-06
#Author(s): Josh Wilson
clear
#assuming this script is run from $SRCROOT
#Backup Existing 'en' reference
cp "en.lproj/Localizable.strings" "en.lproj/Localizable-src.strings"
#Scan source files for 'NSLocalizableString' macros
genstrings -q -u -o en.lproj Classes/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPad/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPhone/*.{m,mm}
#Force FileMerge to launch and diff the update (NOTE: piping to cat forces GUI to open)
opendiff "en.lproj/Localizable-src.strings" "en.lproj/Localizable.strings" | cat
#Cleanup up temporary file
rm "en.lproj/Localizable-src.strings"
Ale to tylko aktualizuje plik EN i brakuje mi sposobu na aktualizację innych plików językowych za pomocą nowych kluczy. Ten był dobry dla przypadków, w których nie mam angielskiego słowa, ponieważ klucz i struny bombardują moje"welcome_message" = "Welcome!"
z"welcome_message" = "welcome_message"
POEditor http://poeditor.com/. Jest to narzędzie online i subskrypcja oparta na 1000 ciągach. Wydaje się, że działa dobrze, ale byłoby dobrze, gdyby istniało narzędzie nie oparte na subskrypcji.
Traducto Pro Wydaje się, że dobrze sobie radzisz z integracją z XCode i wyodrębnianiem łańcuchów i łączeniem rzeczy. Ale nie można odzyskać z niego niczego, dopóki nie zostanie w pełni przetłumaczony, więc będziesz zmuszony do korzystania z ich usług tłumaczeniowych.
Z pewnością ta funkcjonalność została wdrożona wcześniej. W jaki sposób Apple utrzymuje lokalizacje swoich aplikacji?
Skrypciarze, wzywam cię! Rozwój systemu iOS trwa już od jakiegoś czasu, a lokalizacja jest dość powszechna, na pewno jest już dojrzałe rozwiązanie?
Skrypt Pythona update_strings.py: Przepełnienie stosu w końcu poleciłem powiązane pytanie i skrypt Pythona w tej odpowiedziNajlepsza praktyka przy użyciu NSLocalizedString wygląda obiecująco...
Przetestowano go iw obecnej formie (31-MAY-2013) nie obsługuje komentarzy wielowierszowych, jeśli masz zduplikowane wpisy komentarzy (oczekuje komentarzy pojedynczej linii).
Może trzeba trochę ulepszyć regex.