Re: [mochikit] MochiKit.I18n -- proposed new module for internationalization

2011-01-11 Thread Bob Ippolito
This is pretty cool, something I always imagined that I might do if I
were doing this kind of localization. We've only done en and zh at
Mochi, so haven't needed anything outside of the system format.

On Mon, Jan 10, 2011 at 6:38 PM, Per Cederberg cederb...@gmail.com wrote:
 Since I found the MochiKit.Format.formatLocale() function too limited,
 I hacked up a new MochiKit.I18n module:

  https://github.com/cederberg/mochikit/blob/i18n/MochiKit/I18n.js

 It is backwards compatible and adds locales for most languages on
 earth (data derived from Wikipedia and Google Closure sources). At the
 moment it only contains numeric formatting information, but can be
 extended with currency and datetime formatting information if needed.

 My intention is to include this in the default MochiKit 1.4 tree and
 update the MochiKit.Text module to properly support the number
 formatting specified in these locales (some are not currently
 supported).

 Please let me know if you have any issues with this.

 Cheers,

 /Per

 PS. Pasting in the source rst docs below to give a clue as to how it
 is supposed to work.

 

 Name
 

 MochiKit.I18n - internationalization, localization and globalization


 Synopsis
 

 ::

   assert( locale().decimal == . );
   assert( locale(sv_SE).decimal == , );


 Description
 ===

 This module contains numeric localization information for most languages
 and regions on earth. Actual text formatting lives in other modules (such
 as :mochiref:`MochiKit.Text`).


 Dependencies
 

 - :mochiref:`MochiKit.Base`


 Overview
 

 Locale Names
 
 MochiKit uses IETF language codes [1] to identify a locale, e.g.
 ``en_US``. The locale database also supports the use of previously
 unknown locale identifiers by creating a new locale based on the
 language code or the default locale. A number of built-in locale
 identifiers are also supported:

    +-+-+
    | Language    | Description                                             |
    +=+=+
    | ``system``  | The built-in system locale. It is identical to a        |
    |             | ``en_US`` locale for backward compatibility.          |
    +-+-+
    | ``user``    | The user locale, as reported by the browser. This       |
    |             | points to a specific language locale (or the            |
    |             | ``system`` locale.)                                   |
    +-+-+
    | ``default`` | The default locale, used when no language code is       |
    |             | provided. This points to the ``system`` locale by     |
    |             | default.                                                |
    +-+-+

 The default locale is modified by accessing the ``MochiKit.I18n.LOCALE``
 cache of resolved locale objects:

 ::

    MochiKit.I18n.LOCALE[default] = locale(user);


 Locale Objects
 --

 The locale objects returned by :mochiref:`locale()` and stored in the
 ``MochiKit.I18n.LOCALE`` cache all have the following properties (some
 inherited through the prototype chain):

    +-+-+
    | Name                | Description                             |
    +=+=+
    | ``decimal``         | The decimal dot character.              |
    +-+-+
    | ``separator``       | The thousands grouping character.       |
    +-+-+
    | ``separatorGroups`` | The size of thousands groups (from      |
    |                     | right to left). Repeats when exhausted. |
    +-+-+
    | ``percent``         | The percent character.                  |
    +-+-+
    | ``permille``        | The permille character.                 |
    +-+-+
    | ``plus``            | The plus sign character.                |
    +-+-+
    | ``minus``           | The minus sign character.               |
    +-+-+
    | ``signAtEnd``       | The boolean sign at end of string flag. |
    +-+-+
    | ``infinity``        | The infinity character.                 |
    +-+-+



 API Reference
 =

 Functions
 -

 

[mochikit] MochiKit.I18n -- proposed new module for internationalization

2011-01-10 Thread Per Cederberg
Since I found the MochiKit.Format.formatLocale() function too limited,
I hacked up a new MochiKit.I18n module:

  https://github.com/cederberg/mochikit/blob/i18n/MochiKit/I18n.js

It is backwards compatible and adds locales for most languages on
earth (data derived from Wikipedia and Google Closure sources). At the
moment it only contains numeric formatting information, but can be
extended with currency and datetime formatting information if needed.

My intention is to include this in the default MochiKit 1.4 tree and
update the MochiKit.Text module to properly support the number
formatting specified in these locales (some are not currently
supported).

Please let me know if you have any issues with this.

Cheers,

/Per

PS. Pasting in the source rst docs below to give a clue as to how it
is supposed to work.



Name


MochiKit.I18n - internationalization, localization and globalization


Synopsis


::

   assert( locale().decimal == . );
   assert( locale(sv_SE).decimal == , );


Description
===

This module contains numeric localization information for most languages
and regions on earth. Actual text formatting lives in other modules (such
as :mochiref:`MochiKit.Text`).


Dependencies


- :mochiref:`MochiKit.Base`


Overview


Locale Names

MochiKit uses IETF language codes [1] to identify a locale, e.g.
``en_US``. The locale database also supports the use of previously
unknown locale identifiers by creating a new locale based on the
language code or the default locale. A number of built-in locale
identifiers are also supported:

+-+-+
| Language| Description |
+=+=+
| ``system``  | The built-in system locale. It is identical to a|
| | ``en_US`` locale for backward compatibility.  |
+-+-+
| ``user``| The user locale, as reported by the browser. This   |
| | points to a specific language locale (or the|
| | ``system`` locale.)   |
+-+-+
| ``default`` | The default locale, used when no language code is   |
| | provided. This points to the ``system`` locale by |
| | default.|
+-+-+

The default locale is modified by accessing the ``MochiKit.I18n.LOCALE``
cache of resolved locale objects:

::

MochiKit.I18n.LOCALE[default] = locale(user);


Locale Objects
--

The locale objects returned by :mochiref:`locale()` and stored in the
``MochiKit.I18n.LOCALE`` cache all have the following properties (some
inherited through the prototype chain):

+-+-+
| Name| Description |
+=+=+
| ``decimal`` | The decimal dot character.  |
+-+-+
| ``separator``   | The thousands grouping character.   |
+-+-+
| ``separatorGroups`` | The size of thousands groups (from  |
| | right to left). Repeats when exhausted. |
+-+-+
| ``percent`` | The percent character.  |
+-+-+
| ``permille``| The permille character. |
+-+-+
| ``plus``| The plus sign character.|
+-+-+
| ``minus``   | The minus sign character.   |
+-+-+
| ``signAtEnd``   | The boolean sign at end of string flag. |
+-+-+
| ``infinity``| The infinity character. |
+-+-+



API Reference
=

Functions
-

:mochidef:`locale(spec=default)`:

Returns the locale object corresponding to ``spec``. The locale
object returned contains formatting and localization information
that is used when displaying data in non-English languages (see
description above for details).

Note that the cached locale database entry is