Dovrei caricare il testo locale appropriato all'inizio, o ottenere il testo locale in base alle preferenze locali ogni volta?

0

Ad esempio, supponiamo che la mia app abbia dei testi di localizzazione. La mia domanda è, dovrei caricare le impostazioni internazionali appropriate all'inizio:

var locale=userPrefs.getLocale();
localeStringMap=getLocaleTextFromFile("locale_string_"+locale+".json");

//some other code
//.
//.
//.

var message=localeStringMap["welcome_to_use_the_app"];

o ottieni la preferenza della locale quando accedi a una stringa localizzata ogni volta:

var localeStringMap={
  "en":getLocaleTextFromFile("locale_string_en.json"),
  "es":getLocaleTextFromFile("locale_string_es.json"),

};
//some other code
//.
//.
//.

var locale=userPrefs.getLocale();
var message=localeStringMap[locale]["welcome_to_use_the_app"];

    
posta mmmaaa 13.04.2018 - 04:23
fonte

1 risposta

2

Ci sono tre approcci che potresti usare:

Pre-load

Carica immediatamente tutti i file locali. Tutte le informazioni locali vengono quindi conservate in memoria e non richiedono ulteriori caricamenti in fase di runtime.

Vantaggio: veloce. Soffri un avvio leggermente peggiore in cambio di avere tempi di caricamento imbattibili ogni volta che ne hai bisogno.

Svantaggio: utilizzo della memoria. A seconda del numero di locali che intendi supportare, questo potrebbe non essere l'ideale. Se l'utente non cambia spesso le impostazioni locali (cosa che mi aspetterei), allora subisci la penalità di utilizzo della memoria senza i vantaggi.

Lazy-load

Carica i file locali solo quando necessario. Se si pensa che potrebbe essere necessario il file locale all'avvio, caricare una locale predefinita. Utilizzare una mappa / dizionario per tenere traccia di quale utente sta usando quale locale e di avere una sola copia caricata per locale attivo. Quando l'utente si disconnette, se nessun altro utente utilizza quella locale, è possibile scegliere di abbandonarlo o meno, a seconda dell'importanza della memoria.

Vantaggio: utilizzo della memoria insufficiente.

Svantaggio: lievi ritardi di caricamento quando viene richiesta la localizzazione non caricata.

Dinamico

Per ogni richiesta data dall'utente, carica una volta usando la locale attiva. Eventuali modifiche sono immediatamente evidenti e non richiedono il ricaricamento esplicito.

Vantaggio: le modifiche sono immediate. Il più veloce da implementare. Memoria minima.

Svantaggio : ritardi di carico elevati. Se i tempi di caricamento sono abbastanza bassi, questo potrebbe non essere un grosso problema per te.

Conclusione

Se noterai, c'è una sorta di scala qui. Il compromesso è velocità / memoria e mentre ci si sposta dall'alto verso il basso, si migliora e si peggiora l'altro. Qual è il migliore? Dipende da cosa vuoi ottimizzare. Se vuoi velocità, precarica. Se vuoi memoria, rendila dinamica. Se entrambi hanno la stessa importanza, considera il caricamento lento come il meglio di entrambi i mondi a mio modesto parere.

    
risposta data 13.04.2018 - 11:09
fonte

Leggi altre domande sui tag