Se è solo per il test, è possibile modificare le impostazioni internazionali in modo programmatico senza problemi. Cambierà la configurazione della tua app e sarai in grado di testare il tuo codice con le nuove impostazioni internazionali. Ha lo stesso effetto come se un utente lo avesse cambiato. Se si desidera automatizzare i test, è possibile scrivere uno script che modifichi le impostazioni internazionali utilizzando adb shell
come described here e successivamente avviare i test.
Ecco un esempio di testare traduzioni di parola "Annulla" per l'inglese, il tedesco e locali spagnoli:
public class ResourcesTestCase extends AndroidTestCase {
private void setLocale(String language, String country) {
Locale locale = new Locale(language, country);
// here we update locale for date formatters
Locale.setDefault(locale);
// here we update locale for app resources
Resources res = getContext().getResources();
Configuration config = res.getConfiguration();
config.locale = locale;
res.updateConfiguration(config, res.getDisplayMetrics());
}
public void testEnglishLocale() {
setLocale("en", "EN");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancel", cancelString);
}
public void testGermanLocale() {
setLocale("de", "DE");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Abbrechen", cancelString);
}
public void testSpanishLocale() {
setLocale("es", "ES");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancelar", cancelString);
}
}
Ecco i risultati di esecuzione in Eclipse:
Android O aggiornamento.
Quando si utilizza il metodo Android O Locale.setDefault(Category.DISPLAY, locale)
(vedere behaviour changes per ulteriori dettagli).
fonte
2014-02-16 10:46:58
Mi interessa anche questo, quindi la taglia. Le mie specifiche: sto provando da Eclipse e mi piacerebbe poter cambiare le impostazioni internazionali, incluso il fuso orario, nel modo più fluido possibile, all'interno di una suite. Mi piacerebbe vedere un esempio funzionante di come farlo in una risposta. –
@MattGibson Ho aggiornato la mia risposta con un esempio funzionante. Cambia le impostazioni locali sia per i formattatori di date che per le risorse dell'applicazione. –