Corso programmazione Android Lezione 15: Traduzione della nostra APP, cenni sulla pubblicazione e conclusione del corso
Le altre lezioni del Corso di Programmazione Android sono reperibili a questo indirizzo
Questa è l’ultima lezione, la versione 1.0 della app è pronta e pubblicata sul Play Store, e ci occuperemo delle traduzioni.
I sorgenti sono reperibili qui.
Gestione Lingua
Se vogliamo avere più utenti possibile, oltre a supportare un buon numero di device, dobbiamo tradurre la nostra App in più lingue possibili, come minimo in inglese. Per ora ho deciso di supportare inglese (lingua di default, quindi usata anche per utenti con lingue non supportate) e italiano.
Identificare la lingua configurata sul device
Partiamo dalle cose più semplici, nella classe VisAllTab3 apriamo una pagina Wikipedia con le informazioni relative all’autore del libro o all’artista in caso di dischi, dobbiamo far si che la lingua utilizzata dalla pagina Wikipedia sia la stessa utilizzata dalla APP, vediamo come farlo da codice Java:
//Inserisco switch per la lingua String url; url = "http://en.wikipedia.org/wiki/"+ nome_autore; if (getResources().getConfiguration().locale.getLanguage().equals("it")) //identifico la lingua se italiano { url = "http://it.wikipedia.org/wiki/"+ nome_autore; //apro la versione italiana di wikipedia } wb_libro.loadUrl(url); //carcio l'url wb_libro.setWebViewClient(new WebViewClient()); //Senza questa riga apre su un browser esterno o sull'app di Wikipedia
Essendo l’inglese la lingua di default setto per tutti tale lingua e una volta identificata quella in uso (grazie al metodo getResources().getConfiguration().locale.getLanguage() ) se è l’italiano apro la pagina it.wikipedia.org.
Le stringhe
Le stringhe mi hanno portato via un pò più di tempo essendo partito con l’italiano come lingua di default (beata ignoranza), Android Studio mette a disposizione un valente editor delle traduzioni che facilita molto il lavoro di traduzione. Vediamo come richiamarlo e come utilizzarlo (è molto intuitivo, quindi utilizzeremo degli screeenshot).
Una volta selezionato il file strings.xml, clicchiamo sul suggermento che ci consiglia di usare il Traslation Editor:
Una volta aperto possiamo aggiungere una lingua cliccando sul piccolo globo terreste e una stringa cliccando sul piccolo +. Adesso possiamo tradurre tutte le stringhe (avendo messo come default l’italiano ho dovuto prima spostare nell’italiano e poi tradurre il default value):
Alla fine del gioco avremo due cartelle values nella cartella src/res/ uno dei quali con il suffisso -it. La values/ contiene tutti i file (stili, colori, array, dimension e il file strings per la lingua di predefinita) mentre values-it/ contiene solo il file strings per la lingua italiana.
Vediamo il file strings in values/
<resources> <string name="app_name">BeReader</string> <string name="homepage">Home</string> <string name="libri">Books</string> <string name="fumetto">Comic</string> <string name="dischi">Discs</string> <string name="disco">Disc</string> <string name="prestiti">Loans</string> <string name="title_activity_aggiungi_libri">Add Book</string> <string name="title_activity_aggiungi_fumetti">Add Comic</string> <string name="title_activity_aggiungi_dischi">Add Disc</string> <string name="title_activity_aggiungi_pres">Add Loan</string> <string name="title_activity_visualizza_libri">Show Book</string> <string name="title_activity_visualizza_fumetti">Show Comic</string> <string name="title_activity_visualizza_dischi">Show Disc</string> <string name="autore_ins">Author (name and surname)</string> <string name="autore">Author</string> <string name="formato">Format</string> <string name="ebook">Ebook</string> <string name="posizione">Position</string> <string name="prestato_chi">To</string> <string name="prestato_quando">Start Loan</string> <string name="si">Yes</string> <string name="no">No</string> <string name="cd">CD</string> <string name="music">Musicassette</string> <string name="digitale">Digital</string> <string name="libro">Book</string> <string name="copertina">Cover</string> <string name="obbl_no_val">Obligatory field is not valued</string> <string name="prestito">Loan</string> <string name="cancella1">Delete?</string> <string name="cancella2">Delete</string> <string name="nessun_disco">Use + to insert a disc</string> <string name="fumetti">Comics</string> <string name="modifica">Edit</string> <string name="salva">Save</string> <string name="titolo">Title</string> <string name="cartaceo">Papery</string> <string name="descrizione">Description</string> <string name="in_arrivo">Arriving</string> <string name="nessun_fumetto">Use + to insert a comic</string> <string name="nessun_libro">Use + to insert a book</string> <string name="no_prestito">No Loan</string> <string name="prestato">On loan</string> <string name="no_registrazione">No registration</string> <string name="prestato_fine">End Loan</string> <string name="registrato">Item saved</string> <string name="tit_no_val">not valued Title</string> <string name="vinile">Vinyl</string> <string name="genere">Gender</string> <string name="gen">jan</string> <string name="feb">feb</string> <string name="mar">mar</string> <string name="apr">apr</string> <string name="mag">may</string> <string name="giu">jun</string> <string name="lug">jul</string> <string name="ago">aug</string> <string name="set">sep</string> <string name="ott">oct</string> <string name="nov">nov</string> <string name="dic">dic</string> </resources>
e lo stesso file in values-it/
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="autore">Autore</string> <string name="autore_ins">Autore (nome e cognome)</string> <string name="cancella1">Cancella</string> <string name="cancella2">Cancella</string> <string name="cartaceo">Cartaceo</string> <string name="cd">CD</string> <string name="copertina">Copertina</string> <string name="descrizione">Descrizione</string> <string name="digitale">Digitale</string> <string name="dischi">Dischi.</string> <string name="ebook">Ebook</string> <string name="disco">Disco</string> <string name="formato">Formato</string> <string name="fumetti">Fumetti</string> <string name="fumetto">Fumetto</string> <string name="genere">Genere</string> <string name="in_arrivo">In arrivo</string> <string name="libri">Libri</string> <string name="libro">Libro</string> <string name="modifica">Modifica</string> <string name="nessun_disco">Usa il + per inserire un disco</string> <string name="nessun_fumetto">Usa il + per inserire un fumetto</string> <string name="nessun_libro">Usa il + per inserire un libro</string> <string name="no">No</string> <string name="no_prestito">Nessuna prestito</string> <string name="no_registrazione">Nessuna registrazione</string> <string name="obbl_no_val">Campo obbligatorio non valorizzato</string> <string name="posizione">Posizione</string> <string name="prestato">Prestato</string> <string name="prestato_chi">A chi</string> <string name="prestato_fine">Fine prestito</string> <string name="prestiti">Prestiti</string> <string name="prestato_quando">Inizio prestito</string> <string name="prestito">Prestito</string> <string name="registrato">Elemento salvato</string> <string name="salva">Salva</string> <string name="si">Si</string> <string name="tit_no_val">Titolo non valorizzato</string> <string name="title_activity_aggiungi_dischi">Aggiungi Disco</string> <string name="title_activity_aggiungi_fumetti">Aggiungi Fumetto</string> <string name="title_activity_aggiungi_libri">Aggiungi Libro</string> <string name="title_activity_aggiungi_pres">Aggiungi Prestiito</string> <string name="title_activity_visualizza_dischi">Visualizza Disco</string> <string name="title_activity_visualizza_fumetti">Visualizza Fumetto</string> <string name="title_activity_visualizza_libri">Visualizza Libro</string> <string name="titolo">Titolo</string> <string name="vinile">Vinile</string> <string name="music">Musicassetta</string> <string name="app_name">BeReader</string> <string name="homepage">Home</string> <string name="feb">feb</string> <string name="gen">gen</string> <string name="mar">mar</string> <string name="ago">ago</string> <string name="apr">apr</string> <string name="dic">dic</string> <string name="giu">giu</string> <string name="lug">lug</string> <string name="mag">mag</string> <string name="nov">nov</string> <string name="ott">ott</string> <string name="set">set</string> </resources>
Volendo possiamo procedere a mano creando al cartella values-it/ ed editando direttamente i file.
Ecco uno screenshot in inglese e uno in italiano:
Pubblicazione dell’APP
Pubblicare un’app sul Play Store è molto semplice e ben documentato, in attesa di scrivere un tutorial specifico vi rimando alla documentazione ufficiale (segnare un apk, pubblicazione e Developer Console)