[QML] Supportare internazionalizzazione ma senza file .pot

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
pgcor
Prode Principiante
Messaggi: 208
Iscrizione: mercoledì 11 novembre 2015, 18:11

[QML] Supportare internazionalizzazione ma senza file .pot

Messaggio da pgcor »

Salve a tutti :ciao:
In QML ho la necessità di importare stringhe abbastanza lunghe da un file JavaScript esterno; tuttavia, se scrivo in questa maniera:

Codice: Seleziona tutto

import "texts.js" as Testi
...
Label {
     ...
     text: i18n.tr(Testi.titolo['titolo'])
     ...
}
..nel file .pot (che contiene le traduzioni) non mi visualizza, tra le stringhe disponibili per la traduzione, quella per cui ho utilizzato il file JavaScript :cry:
Per risolvere questa situazione, ho pensato quanto segue:
  • - creare tanti file JavaScript quante sono le traduzioni desiderate, ciascune contenenti variabili corrispondenti e appunto le stesse stringhe ma tradotte ovviamente nelle rispettive lingue (quindi in ogni file ci sarà una variabile titolo, ma con contenuto in lingue diverse, per poter, nel file .qml, chiamare la stringa sempre con lo stesso nome); chiamarli texts-it.js, texts-fr.js, texts-en.js etc...
  • - all'inizio del file .qml in cui ho bisogno di tali stringhe, reperire dal dispositivo quale sia la lingua impostata dall'utente sul dispositivo
  • - quindi in base alla lingua ottenuta nel punto precedente, tramite uno switch o qualcosa del genere, importare il file JavaScript corrispondente
È possibile farlo? Oppure dovrei rinunciare all'utilizzo del file JavaScript come contenitore delle stringhe?

Edit: oppure va bene fare tutto con il file .pot, anche se si tratta di stringhe abbastanza grandi, quindi tralasciando il file JS?
Un ente intrinsecamente dipendente ne richiede uno assolutamente indipendente. A tutti quelli che hanno la vocazione di avere solo ragione... e di essere accecati dai propri vizi: prima o poi arriverete a Canossa. Prego per voi che avvenga prima. | Ubuntu Touch non è morto Gruppo Ubuntu Touch ModDB
Avatar utente
rpadovani
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3434
Iscrizione: lunedì 8 dicembre 2008, 19:49
Desktop: GNOME Shell
Distribuzione: Ubuntu 18.04 x86_64
Sesso: Maschile
Località: Munich, Germany
Contatti:

Re: [QML] Supportare internazionalizzazione ma senza file .p

Messaggio da rpadovani »

nel file .pot (che contiene le traduzioni) non mi visualizza, tra le stringhe disponibili per la traduzione, quella per cui ho utilizzato il file JavaScript
Il tool che genera i file pot parsa i file ma non esegue il programma, quindi non può vedere quale valore ha quella variabile.

Utilizza sempre i tool automatici per le traduzioni. Così puoi importarli facilmente in Launchpad, e non devi stare a gestirli tu

La soluzione è semplice, nel tuo file con le stringhe imposti il i18n.tr:

Codice: Seleziona tutto

var stringhe = {
    '1': i18n.tr("ciao")
};
È importante usare i doppi apici :)
Solutions Architect at nextbit | About me
Changing the world bit by bit
Avatar utente
pgcor
Prode Principiante
Messaggi: 208
Iscrizione: mercoledì 11 novembre 2015, 18:11

Re: [QML] Supportare internazionalizzazione ma senza file .p

Messaggio da pgcor »

Quindi dici che per le traduzioni in altre lingue, lascio stare altri file JS, e va bene metterle nel pot?
Perfetto grazie ;)
Provo e se ho problemi metto risolto
Un ente intrinsecamente dipendente ne richiede uno assolutamente indipendente. A tutti quelli che hanno la vocazione di avere solo ragione... e di essere accecati dai propri vizi: prima o poi arriverete a Canossa. Prego per voi che avvenga prima. | Ubuntu Touch non è morto Gruppo Ubuntu Touch ModDB
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti