Corso programmazione Android Lezione 15: Traduzione della nostra APP, cenni sulla pubblicazione e conclusione del corso

corso programmazione android lezione 15

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:

 

corso programmazione android lezione 15

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):

 

corso programmazione android lezione 15

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:

 

corso programmazione android lezione 15

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)

 

You May Have Missed