Is it feasible to rely on setlocale, and rely on locales being installed?
Asked Answered
O

3

9

I was trying to generate a localized date string with strftime, the placeholder I use is %x. The language/locale is setlocale(LC_ALL, array('jp','japanese')), however neither locale was available so it generated a string with improper characters. I then installed the ja_JP.utf8 locale and specified that as the first element in the array and the date formatting issue I had was resolved.

My question is, should I always rely on locales being installed? I'm aware of how to install them on boxes I have root access to, but what if I don't have access?

I believe Zend_Locale and Zend_Translate do not rely on setlocale at all but somehow do it internally, which gives me the impression that it isn't practically feasible for enterprise level applications.

I know I could probably use Zend_Locale and Zend_Translate in my application but it also needs to support PHP4, at least for another year which is why I can't solely rely upon those.

Octarchy answered 21/12, 2009 at 19:4 Comment(0)
V
8

If my examination of setlocale() is correct, the answer is: No and no. The range of installed locales varies, as does their name, and the availability of a certain locale ultimately cannot be predicted with total certainty.

Vanover answered 21/12, 2009 at 19:9 Comment(0)
L
9

You can check the return value of setlocale and at least check that it was installed. Otherwise you will have silent failures:

setlocale(LC_ALL, 'en_US') or die('Locale not installed');
Lizalizabeth answered 7/5, 2015 at 2:42 Comment(0)
V
8

If my examination of setlocale() is correct, the answer is: No and no. The range of installed locales varies, as does their name, and the availability of a certain locale ultimately cannot be predicted with total certainty.

Vanover answered 21/12, 2009 at 19:9 Comment(0)
S
0

Feasible, yes. Wise, not at all!

Stoneman answered 21/12, 2009 at 19:19 Comment(2)
What method do you use for localized dates?Octarchy
intl (php.net/manual/en/book.intl.php) is an interface to ICU, so I trust it. Nevertheless: trust but verify, as Ronnie used to say.Stoneman

© 2022 - 2024 — McMap. All rights reserved.