2013-01-09 11 views
23

La mia app supporta solo 2 lingue: inglese e tedesco. Così ho tale struttura delle cartelle per le lingue stringhe:Lingue limite limite per Android per verificare la presenza di traduzioni mancanti

mioprogetto/res/valori/strings.xml

mioprogetto/res/valori-de/strings.xml

Quando eseguo Lint controllare ricevo molti avvertimenti sui linguaggi mancanti, che la mia applicazione non ha bisogno di sostenere:

"some_string" non è tradotto in af, sono, ar, BE, BG, CA, CS, dA, EL, en-rGB, es, es-rUS, et, fa, fi, fr, ciao , hr, hu, in, it, 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

Questo avviso rende molto difficile capire quali stringhe non sono tradotte in lingua tedesca. Devo controllare ogni avviso e cercare i simboli "de" per capire che questa stringa non ha traduzione in tedesco.

Quindi la mia domanda è semplice - come posso dire a Lint di controllare solo 2 lingue?

+0

Questo può essere utile ... http://stackoverflow.com/questions/11443996/lint-how-to-ignore-key-is-not-translated-in-language-errors – Santhosh

+1

Questo link è utile solo se non ti importa di NESSUNA traduzione Una delle mie app funziona correttamente per 2 lingue, l'altra (che usa le stesse lingue e la struttura delle cartelle) genera l'errore come visto sopra, POSSO ignorarlo, ma VOGLIO tradurre le stringhe mancanti nella mia seconda lingua. Devo passare una riga dopo l'altra di oltre 100 stringhe per assicurarmi che non manchi la mia lingua target, molto frustrante. – thunsaker

risposta

8

Lo stesso problema qui.

ho creato un bug report, si sentono liberi di protagonista è

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

Questo è accaduto dal momento che ADT 21.1 rilascio.

so alcuna soluzione per esso (editing: ho già però di aver trovato una soluzione, ma ho guardato il file sbagliato, UPS)

34

Aggiornamento: È possibile limitare le lingue che vengono importati da Gradle ! Cyril Mottier sottolinea che è possibile specificare le risorse supportate.

partire Android Gradle Plugin 0.7, è possibile passare informazioni sulle configurazioni vostra applicazione si occupa per il sistema di generazione. Questo viene fatto grazie all'opzione resConfig e resConfigs e all'opzione di configurazione predefinita. Il DSL sotto impedisce aapt da imballaggio risorse che non corrispondono al app configurazioni risorse gestite:

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

Maggiori informazioni qui Putting Your APKs on Diet e Android (cercare resConfig sulla pagina)


Sembra che se aggiungi un progetto al tuo percorso di costruzione, tutte le lingue che sono state aggiunte a quei progetti si riverseranno nel tuo progetto. Ad esempio il progetto "google-play-services_lib", che ha aggiunto ben altre 40 lingue al mio progetto che ho "supportato". Questo è stato il motivo per cui ho avuto degli errori pazzi (simili ai tuoi sopra), anche se avevo solo una cartella delle risorse di default e spagnola (valori).

La soluzione è semplicemente eliminare i file/le cartelle di risorse che non vengono supportati dai progetti esterni/importati. Dopo aver eliminato tutti tranne la cartella valori/valori nel progetto google-play-services_lib, gli avvisi per i lanci sono andati via per le lingue non di destinazione. Assicurati di conservare un backup dei file di risorse nel caso tu voglia aggiungere un supporto per quelle lingue/regioni in un secondo momento.

Spero che questo aiuti. Stavo sbattendo la testa sul tavolo e su SO e Google per alcuni giorni cercando di capire come esprimere il problema. Poi ho finalmente capito qual è stata la differenza tra i miei due progetti che hanno entrambi avuto traduzioni, i progetti della biblioteca.

Mi piacerebbe che ci fosse un modo per dire al progetto che supporto solo le lingue x/y/z e che ho ignorato il resto.

+0

Quanto sopra funziona solo se aggiungi il Progetto Libreria Android al tuo spazio di lavoro. Se fai riferimento alla libreria di Google Play Services tramite Gradle o Maven, ottieni TUTTO ciò che viene fornito, poiché non puoi modificare una libreria pacchettizzata. – thunsaker

+0

@thunsakes, la tua risposta non è vera. Dopo aver aggiunto resConfig al file build.gradle, è necessario eseguire Build -> CleanProject. Dopodiché, i locali non sollecitati non saranno elencati nei controlli "MissingTranslation". –

0

Ho lo stesso problema, a causa dell'inclusione del servizio di biblioteca di Google ...

Ecco la mia soluzione, per il momento:

  1. rimuovere tutte le librerie incluse
  2. applicano lint
  3. correggere gli errori
  4. aggiungere tutte le librerie di nuovo
Problemi correlati