2013-01-09 8 views
23

Moja aplikacja obsługuje tylko 2 języki - angielski i niemiecki. Więc mam taką strukturę folderów dla języków strun:Języki ograniczeń limitu w Androidzie w celu sprawdzenia brakujących tłumaczeń

myproject/RES/Wartości/strings.xml

myproject/res/wartości-de/strings.xml

Kiedy biegnę Lint sprawdź Otrzymuję wiele ostrzeżeń o brakujących językach, których moja aplikacja nie musi obsługiwać:

"some_string" nie jest przetłumaczone na af, am, ar, be, bg, ca, cs, da, el, en-rGB, es, es-rus, et, fa, fi, fr, cześć , h, hu, w, to, iw, ja, ko, lt, lv, ms, nb, nl, pl, pt, pt-rPT, ro, ru, sk, sl, sr, sv, sw, th, tl , tr, uk, vi, zh-rCN, zh-rTW, zu

To ostrzeżenie bardzo utrudnia zrozumienie, które ciągi nie są tłumaczone na język niemiecki. Muszę przyjrzeć się każdemu ostrzeżeniu i wyszukać symbole "de", aby zrozumieć, że ten ciąg nie ma tłumaczenia na język niemiecki.

Moje pytanie jest proste - jak mogę powiedzieć Lint, aby sprawdzał tylko 2 języki?

+0

Może to być pomocne ... http://stackoverflow.com/questions/11443996/lint-how-to-ignore-key-is-not-translated-in-language-errors – Santhosh

+1

Ten link jest przydatny tylko wtedy, gdy nie zależy ci na JAKICHKOLWIEK tłumaczeniach. Jedna z moich aplikacji działa poprawnie dla dwóch języków, druga (która używa tych samych języków i struktury folderów) zgłasza błąd, jak widać powyżej, mogę Zignorować to, ale CHCĘ przetłumaczyć brakujące ciągi na mój drugi język. Muszę przejść wiersz po linii ponad 100 ciągów znaków, aby upewnić się, że nie brakuje mi języka docelowego, co jest bardzo frustrujące. – thunsaker

Odpowiedz

8

Ten sam numer tutaj.

stworzyłem raport o błędzie, nie krępuj się, aby zagrać to

http://code.google.com/p/android/issues/detail?id=50525

Stało od ADT 21,1 wydaniu.

znam żadnego obejścia bo (edycja: I wcześniej choć znaleźli obejście, ale wyglądał na niewłaściwym pliku, ups)

34

Aktualizacja: Można ograniczyć języki które są importowane przez Gradle ! Cyril Mottier wskazuje, że możesz określić obsługiwane zasoby.

Zaczynając Android Gradle Plugin 0.7, można przekazać informacje na temat konfiguracji swoje oferty z aplikacji do systemu budowania. Odbywa się to dzięki ustawieniom smaku i domyślnej konfiguracji resConfig i resConfigs. Poniższa DSL uniemożliwia aapt od pakowania zasobów, które nie pasują do aplikacji zarządzanych konfiguracjach personalnych:

defaultConfig { 
    // ... 
    resConfigs "en", "de", "fr", "it" 
} 

Więcej informacji tutaj Putting Your APKs on Diet i Android (szukaj resConfig na stronie)


Wygląda na to, że jeśli dodasz projekt do swojej ścieżki budowania, wszystkie języki dodane do tych projektów zostaną przeniesione do twojego projektu. Takich jak projekt "google-play-services_lib", który dodał dobre 40+ języków do mojego projektu, który "wspierałem". To był powód, dla którego dostałem szalone błędy lint (podobne do twoich powyżej), mimo że miałem tylko domyślny i hiszpański folder wartości (value-es).

Rozwiązaniem jest po prostu usunięcie plików/folderów zasobów, które nie są obsługiwane z projektów zewnętrznych/importowanych. Po usunięciu wszystkich folderów oprócz wartości/values-es z projektu google-play-services_lib ostrzeżenia o kłaczkach zostały usunięte dla języków innych niż docelowe. Pamiętaj, aby zachować kopię zapasową plików zasobów na wypadek, gdybyś chciał dodać obsługę tych języków/regionów w późniejszym terminie.

Mam nadzieję, że to pomoże. Uderzyłem głową w stół i całe SO i Google przez kilka dni próbując wymyślić jak sformułować problem. W końcu zdałem sobie sprawę z różnicy między moimi dwoma projektami, które miały tłumaczenia, projekty biblioteczne.

Żałuję, że nie było sposobu, aby powiedzieć projektowi, że obsługuję tylko języki x/y/z i czy mam to zignorować resztę.

+0

Powyższe działa tylko po dodaniu projektu biblioteki Android do swojego obszaru roboczego. Jeśli odwołujesz się do biblioteki usług Google Play przez gradle lub maven, dostajesz WSZYSTKO, co jest z nią związane, ponieważ nie możesz edytować biblioteki w pakiecie. – thunsaker

+0

@thunsakes, Twoja odpowiedź nie jest prawdą. Po dodaniu funkcji resConfig do pliku build.gradle wystarczy wykonać polecenie Build -> CleanProject. Następnie nieudane ustawienia regionalne nie będą wyświetlane w wynikach kontroli "Brakujące tłumaczenie". –

0

Mam ten sam problem, ze względu na włączenie usługi biblioteki Google ...

Oto moje rozwiązanie, w tej chwili:

  1. usunąć wszystkie dołączone biblioteki
  2. zastosowanie szarpie
  3. poprawić błędy
  4. dodać wszystkie biblioteki ponownie
Powiązane problemy