8

Stavo cercando di generare una stringa di data localizzata con strftime, il segnaposto che uso è %x. La lingua/locale è setlocale(LC_ALL, array('jp','japanese')), tuttavia nessuna delle due era disponibile, quindi ha generato una stringa con caratteri non corretti. Ho quindi installato le impostazioni internazionali ja_JP.utf8 e l'ho specificato come primo elemento dell'array e il problema di formattazione della data che avevo riscontrato era stato risolto.È possibile fare affidamento su setlocale e affidarsi all'installazione di locales?

La mia domanda è: devo sempre fare affidamento sull'installazione locale? Sono a conoscenza di come installarli sulle caselle a cui ho accesso root, ma cosa succede se non ho accesso?

credo Zend_Locale e Zend_Translate non si basano su setlocale a tutti, ma in qualche modo lo fanno internamente, che mi dà l'impressione che non è praticamente possibile per le applicazioni di livello enterprise.

so probabilmente potrei usare Zend_Locale e Zend_Translate nella mia richiesta, ma ha anche bisogno di supportare PHP4, almeno per un altro anno ed è per questo che non posso fare affidamento esclusivamente su quelli.

risposta

6

Se il mio esame di setlocale() è corretto, la risposta è: No e no. La gamma di localizzazioni installate varia, così come il loro nome e la disponibilità di un determinato locale in definitiva non possono essere previste con totale certezza.

0

Fattibile, sì. Saggio, niente affatto!

+1

Quale metodo si utilizza per le date localizzate? –

+2

intl (http://www.php.net/manual/en/book.intl.php) è un'interfaccia per ICU, quindi mi fido di esso. Tuttavia: fidati, ma verifica, come diceva Ronnie. –

4

È possibile controllare il valore restituito da setlocale e verificare almeno che sia stato installato. In caso contrario, si avranno silenziosi errori:

setlocale(LC_ALL, 'en_US') or die('Locale not installed'); 
Problemi correlati