2011-11-06 12 views
13

Voglio eseguire la scansione del mio progetto Android per tutte le stringhe codificate in modo da poter localizzare il progetto, inserendo le stringhe in strings.xml. Vedo un'opzione in Eclipse su "Externalize Strings ..." ma non è specifica per Android.Android: c'è un modo semplice per trovare tutte le stringhe nel mio progetto?

Conosco you can refactor individual strings ma mi piacerebbe refactoring tutte le stringhe in una volta. Ho un sacco di file, e sto cercando di evitare di passare attraverso ciascuno manualmente.

risposta

12

Vorrei solo aprire una finestra di terminale (stucco se sei su Windows) nella directory principale del tuo progetto. È quindi possibile eseguire qualcosa di simile a quanto segue:

grep -r --include=*.java '="[^"\r\n]*"' ./* --to look for something like this String test="text";, a string with ="" 
or 
grep -r --include=*.java '"[^"\r\n]*"' ./* -- to look for any string, anything enclosed in "" 

Naturalmente la parte successiva è quella di sostituire in realtà le stringhe nel strings.xml, che potrebbe essere sceneggiato fuori pure, ma potrebbe prendere più armeggiare.

+0

Sembra l'unica soluzione in questo momento. –

+3

È anche possibile eseguire questa operazione da Eclipse. Scegli Cerca-> File. Quindi incolla "[^" \ r \ n] * "nel campo di testo e assicurati che" Espressione regolare "sia selezionata.I risultati della ricerca sono organizzati meglio in questo modo .. – rplankenhorn

+1

Il suggerimento di rplankenhorn funziona bene anche in androidstudio. Cmd + shft + f e selezionare "espressione regolare" – accordionfolder

-1

Credo che l'addon Google CodePro per Eclipse ha questa caratteristica in là qualche parte

+0

non c'è niente lì che ho trovato che l'aiuto con questo problema – shem

7

Lo stavo cercando da solo. C'è un bel modo di fare questo:

clic destro sulla cartella "src" -> Sorgente -> Esternalizza Strings

Ciò trovare tutte non-Esternalizza archi e lasciare che li esternare.

Spero che questo vi aiuterà :)

Edit:
Questo non è lo stesso come l'Android -> Extract String Android. Ma può aiutarti a trovare tutte le stringhe non esternalizzate. Quindi, su ogni stringa da eseguire:
Ctrl + 1 -> Android -> Estrai stringa Android.

1

Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields(); String str = ""; for (int i =0; i < fields.length; i++) { int resId = getResources().getIdentifier(fields[i].getName(), "string", getPackageName()); str += fields[i].getName() + " = "; if (resId != 0) { str += getResources().getString(resId); } str += "\n"; }

Otterrete tutti i codici di stringhe con i suoi valori nella variabile "str".

Problemi correlati