Localizzazione#
L’amministrazione web è completamente localizzata in inglese, spagnolo e italiano. Il modello è una lingua per immagine firmware — non c’è cambio di lingua a runtime, e le stringhe di nessun’altra lingua sono compilate in una data build.
Nota
Questo si applica all’amministrazione web del firmware. Questa documentazione è disponibile separatamente in tutte e tre le lingue contemporaneamente, con un selettore di lingua per pagina — questa è una proprietà della documentazione, non del firmware.
Come funziona#
app_config.hdefinisce i codici di linguaLANG_EN 0,LANG_ES 1,LANG_IT 2e laLANGUAGEattiva (predefinitaLANG_EN).translations/translations.hè l”unico posto che decide qualelang_xx.hè incluso, tramite rami#if LANGUAGE == ….Ogni stringa visibile all’utente nell’amministrazione web passa per una macro
TR_xxx. Ci sono 1045 di queste macro, e ciascuno dei tre filelang_*.hle definisce tutte. 230 di esse sono le stringhe di aiuto contestualeTR_H_xxxdietro il punto interrogativo che chiude ogni etichetta di opzione, così i fumetti di aiuto sono tradotti esattamente come le etichette che spiegano.
Selezionare la lingua in compilazione#
idf.py build # inglese (predefinito)
idf.py build -DLANGUAGE=LANG_ES # spagnolo
idf.py build -DLANGUAGE=LANG_IT # italiano
Puoi anche fissarla in CMakeLists.txt (set(LANGUAGE LANG_ES) /
target_compile_definitions) o cambiare il valore predefinito in
app_config.h.
Aggiungere una lingua#
Copia
translations/lang_en.h→lang_xx.h, traduci ogni letterale, e mantieni ogni nome di macro identico.#define LANG_XX <prossimo numero libero>inapp_config.h.Aggiungi un ramo
#elif LANGUAGE == LANG_XXintranslations.h.Compila con
-DLANGUAGE=LANG_XX.
Importante
La mancanza di un TR_xxx in una lingua è un errore di compilazione nella
build di quella lingua — intenzionale, così che le stringhe non tradotte non
possano mai uscire in silenzio. Ecco perché i tre file lang_*.h portano
sempre esattamente lo stesso insieme di macro.