Sto lavorando a un progetto in più lingue con Zend Framework (tedesco e inglese) in cui ho una piccola forma per ordinare un prodotto. L'utente deve essere in grado di:Procedura consigliata per gestire le impostazioni internazionali con valute e interruttori di lingua
- cambiare la sua valuta preferita per i prezzi dei prodotti
- cambiare la sua lingua preferita per tutto il sito
Al momento io uso Zend_Locale :: findLocale() per ottenere le impostazioni locali dell'utente. Con le mie impostazioni del browser ottengo 'de_CH' e funziona bene. Ma ci sono alcuni problemi nel più breve tempo:
- L'utente ha configurato il suo browser per datemi il codice della lingua ('de' invece di 'de_CH')
- L'utente preferisce una lingua che non è supportata dal mio sito
- l'utente è da un paese dove hanno preso una valuta che non è supportata dal mio modulo d'ordine prodotto
Proprio il codice della lingua il codice lingua è sufficiente per gestire Zend_Translate, b ut Zend_Currency ha bisogno di più informazioni. Penso che non ci sia una soluzione per ottenere il locale completo con il codice del paese da ogni utente possibile. La mia domanda è: come gestisci queste situazioni? Accedete al _initLocale() del vostro bootstrap se manca un codice di paese e usate un codice paese predefinito? Esistono metodi Zend Framework per farlo?
una lingua non supportata Se gli utenti lingua è 'fr', vorrei usare una lingua predefinita perché il nostro sito web non supporta francese. C'è una possibilità migliore di aggiungere una matrice whitelist in bootstrap? Ad esempio un metodo da Zend_Translate?
Una valuta non supportata E se la lingua dell'utente è supportata, ma non la sua valuta? Dovrei cambiare la locale in bootstrap o dovrei fare una copia della locale e cambiarla per Zend_Currency?
Il problema principale Penso che il mio problema principale è che non sono sicuro di come gestire tutti questi diversi problemi di locale. Il mio approccio preferito sarebbe quello di verificare la localizzazione impostata in _initLocale() del bootstrap, quindi posso essere sicuro di poter supportare la lingua e la valuta.
Grazie per i vostri consigli.
Con i migliori saluti, Nico
Editing 1 Mi sono fatto alcune riflessioni di più di un modo per gestire questi problemi. Cosa ne pensi di questo approccio?
Zend_Locale()
: filtrare tutti i locali brevi (senza prefisso internazionale) e utilizza una whitelist con i linguaggi supportati dall'applicazione (solo il codice della lingua). Se non vi sono corrispondenze, utilizzare il valore predefinito fornito dall'applicazione.Zend_Translate
: inizia con il codice della lingua dalla locale.Ma se l'utente cambia la lingua preferita, lascia le impostazioni internazionali così come sono (forse non ci sono impostazioni locali corrispondenti in base al nuovo codice lingua e al vecchio prefisso nazionale) e cambia semplicemente il codice della lingua inZend_Translate
.Zend_Currency
: utilizzare le impostazioni internazionali come predefinite. Se l'utente cambia la valuta preferita, basta cambiare la valuta e non la locale. Quindi la formattazione rimarrebbe basata sulla vecchia versione locale perché la modifica della valuta non significa che l'utente voglia anche cambiare la sua localizzazione.
Questo approccio è accettabile? C'è un problema con il passaggio 1 se i browser Locale sono impostati in questo modo:
- de
- it_IT
Forse l'applicazione non supporta tedesco, ma perché è una breve locale, l'applicazione userà invece en_US. Ma non so quale soluzione possa risolvere questo problema, perché non posso "aggiornare" una breve locale ad una locale completa.
non sono sicuro se questo aiuta, ma come un utente che detesto applicazioni e siti web che cercano di capire la mia lingua per me. Penso che sia sempre meglio avere un pulsante di lingua o un menu a discesa sul tuo sito. Il vantaggio per te è che non ti devi preoccupare di rilevare combinazioni linguistiche strane. – Matt
+1 su suggerimento di Matt. Sono perplesso sul motivo per cui vorresti sostenere ogni lingua e valuta. Probabilmente convertirai il tuo sito solo da 5 a 10 lingue al massimo. Quindi, cercare di "rilevare" una localizzazione e fare qualsiasi magia è necessaria per trovare la lingua giusta potrebbe non essere necessaria. Che dire delle persone che visitano Amsterdam, che preferirebbero l'inglese o il francese, ma il tuo sito rileva che capiranno molto probabilmente l'olandese? Io voto per un selettore di lingua/valuta. BACIO. –
OK, ma per essere in grado di generare le impostazioni internazionali complete, l'utente deve anche scegliere il proprio paese. Oppure emetterei la valuta scelta in modo errato (12.000 euro invece di 12.000 euro per esempio). Ma sì, forse K.I.S.S. è la via centrale giusta qui ;-). Grazie per il tuo suggerimento. – Nico