includes/clientside/static/l10n.js
author Dan
Sat, 01 Mar 2008 18:55:30 -0500
changeset 465 fe8b8c9b54e8
parent 461 717e71109645
child 468 194a19711346
permissions -rw-r--r--
Finished theme manager to the point where it's in a working state in Firefox and hopefully IE.
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
{
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     7
  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
     8
    return false;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
     9
  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
    10
    return false;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    11
  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
    12
  this.lang_id = lang_id;
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    13
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    14
  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
    15
  {
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
    16
    if ( window.console )
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
    17
    {
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
    18
      try {
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
    19
        window.console.log('$lang(' + this.lang_id + '): requested string: ' + string_id);
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
    20
      }
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
    21
      catch(e)
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
    22
      {}
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
    23
    }
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    24
    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
    25
    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
    26
    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
    27
      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
    28
    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
    29
      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
    30
    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
    31
  }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    32
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    33
  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
    34
  {
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
    35
    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
    36
    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
    37
    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
    38
    {
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
    39
      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
    40
      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
    41
    }
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    42
    // 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
    43
    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
    44
    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
    45
    {
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    46
      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
    47
      {
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    48
        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
    49
          continue;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    50
        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
    51
        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
    52
      }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    53
    }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    54
    return str;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    55
  }
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    56
  
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    57
}
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    58
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    59
var $lang;
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    60
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    61
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
    62
{
461
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    63
  if ( typeof(enano_lang) != 'object' )
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    64
  {
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    65
    language_onload_resched();
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    66
    return true;
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    67
  }
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    68
  if ( !enano_lang[ENANO_LANG_ID] )
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    69
  {
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    70
    language_onload_resched();
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    71
    return true;
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    72
  }
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    73
  $lang = new Language(ENANO_LANG_ID);
461
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    74
}
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    75
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    76
// Rescheduler for language onload - allows delaying init if the string list
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    77
// isn't ready yet
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    78
function language_onload_resched()
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    79
{
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    80
  alert('delaying language init by 0.2s');
717e71109645 Fixed a number of IE6 bugs
Dan
parents: 391
diff changeset
    81
  setTimeout('language_onload();', 200);
210
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    82
}
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    83
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    84
addOnloadHook(language_onload);
2b283402e4e4 Added language export to JSON page and localization for Javascript using $lang.get(). Localized AJAX login interface.
Dan
parents:
diff changeset
    85