Zend_Locale is the Frameworks answer to the question, "How can the
same application be used around the whole world?" Most people will say, "That's easy. Let's
translate all our output to several languages." However, using simple translation tables to
map phrases from one language to another is not sufficient. Different regions will have
different conventions for first names, surnames, salutory titles, formatting of numbers,
dates, times, currencies, etc.
We need Localization
and complementary Internationalization. Both are often abbreviated to
L10n and I18n. Internationalization
refers more to support for use of systems, regardless of special needs unique to groups of
users related by language, region, number format conventions, financial conventions, time
and date conventions, etc. Localization involves adding explicit support to systems for
special needs of these unique groups, such as language translation, and support for local
customs or conventions for communicating plurals, dates, times, currencies, names, symbols,
sorting and ordering, etc. L10n and I18n
compliment each other. Zend Framework provides support for these through a combination of
components, including Zend_Locale, Zend_Date,
Zend_Measure, Zend_Translate,
Zend_Currency, and Zend_TimeSync.
Zend_Locale and setLocale()
PHP's documentation states that
setlocale() is not threadsave because it is maintained per
process and not per thread. This means that, in multithreaded environments, you can have
the problem that the locale changes while the script never has changed the locale
itself. This can lead to unexpected behaviour when you use
setlocale() in your scripts.
When you are using Zend_Locale you will not have this
limitations, because Zend_Locale is not related to or coupled
with PHP's setlocale().




