includes/clientside/static/l10n.js
author Dan
Thu, 26 Jun 2008 16:56:52 -0400
changeset 583 c97d5f0d6636
parent 582 a38876c0793c
child 586 234ddd896555
permissions -rw-r--r--
Installer should work with JS componentization now
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     1
/*
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     2
 * Enano client-side localization library
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     3
 */
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     4
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     5
var Language = function(lang_id)
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     6
{
583
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
     7
  var have_lang = false;
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
     8
  
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
     9
  if ( typeof(enano_lang) == 'object' )
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    10
  {
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    11
    if ( typeof(enano_lang[lang_id]) == 'object' )
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    12
    {
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    13
      have_lang = true;
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    14
    }
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    15
  }
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    16
  if ( !have_lang )
582
a38876c0793c Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents: 581
diff changeset
    17
  {
583
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    18
    // load the language file
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    19
    load_show_win('strings');
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    20
    var ajax = ajaxMakeXHR();
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    21
    var uri = makeUrlNS('Special', 'LangExportJSON/' + lang_id);
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    22
    ajax.open('GET', uri, false);
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    23
    ajax.send(null);
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    24
    if ( ajax.readyState == 4 && ajax.status == 200 )
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    25
    {
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    26
      eval_global(ajax.responseText);
c97d5f0d6636 Installer should work with JS componentization now
Dan
parents: 582
diff changeset
    27
    }
582
a38876c0793c Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents: 581
diff changeset
    28
  }
a38876c0793c Majorly reworked Javascript runtime stuff to use on-demand loading.
Dan
parents: 581
diff changeset
    29
  
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    30
  if ( typeof(enano_lang) != 'object' )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    31
    return false;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    32
  if ( typeof(enano_lang[lang_id]) != 'object' )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    33
    return false;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    34
  this.strings = enano_lang[lang_id];
391
85f91037cd4f Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
parents: 387
diff changeset
    35
  this.lang_id = lang_id;
581
5e8fd89c02ea Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents: 568
diff changeset
    36
  this.placeholder = false;
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    37
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    38
  this.get = function(string_id, subst)
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    39
  {
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    40
    var catname = string_id.substr(0, string_id.indexOf('_'));
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    41
    var string_name = string_id.substr(string_id.indexOf('_') + 1);
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    42
    if ( typeof(this.strings[catname]) != 'object' )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    43
      return string_id;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    44
    if ( typeof(this.strings[catname][string_name]) != 'string' )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    45
      return string_id;
387
92664d2efab8 Rebranded source code as 1.1.1; added TinyMCE ACL rule as per Vadi's request: http://forum.enanocms.org/viewtopic.php?f=7&t=54
Dan
parents: 335
diff changeset
    46
    return this.perform_subst(this.strings[catname][string_name], subst);
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    47
  }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    48
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    49
  this.perform_subst = function(str, subst)
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    50
  {
335
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    51
    var this_regex = /%this\.([a-z0-9_]+)%/;
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    52
    var match;
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    53
    while ( str.match(this_regex) )
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    54
    {
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    55
      match = str.match(this_regex);
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    56
      str = str.replace(match[0], this.get(match[1]));
67bd3121a12e Replaced TinyMCE 2.x with 3.0 beta 3. Supports everything but IE. Also rewrote the editor interface completely from the ground up.
Dan
parents: 334
diff changeset
    57
    }
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    58
    // hackish workaround for %config.*%
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    59
    str = str.replace(/%config\.([a-z0-9_]+)%/g, '%$1%');
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    60
    if ( typeof(subst) == 'object' )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    61
    {
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    62
      for ( var i in subst )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    63
      {
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    64
        if ( !i.match(/^([a-z0-9_]+)$/) )
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    65
          continue;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    66
        var regex = new RegExp('%' + i + '%', 'g');
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    67
        str = str.replace(regex, subst[i]);
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    68
      }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    69
    }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    70
    return str;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    71
  }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    72
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    73
}
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    74
581
5e8fd89c02ea Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents: 568
diff changeset
    75
var $lang = {
5e8fd89c02ea Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents: 568
diff changeset
    76
  get: function(t) { return t; },
5e8fd89c02ea Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents: 568
diff changeset
    77
  placeholder: true
5e8fd89c02ea Initial progress towards converting auto-completion framework to Spry. Not currently in a very working state.
Dan
parents: 568
diff changeset
    78
};
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    79
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    80
var language_onload = function()
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    81
{
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    82
  $lang = new Language(ENANO_LANG_ID);
461
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    83
}
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    84
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    85
addOnloadHook(language_onload);