Transposh WordPress Translation - Version 0.7.0

Version Description

New edit interface, tons of other fixes

Download this release

Release Info

Developer oferwald
Plugin Icon 128x128 Transposh WordPress Translation
Version 0.7.0
Comparing to
See all releases

Code changes from version 0.6.7 to 0.7.0

core/constants.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  //Language indicator in URL. i.e. lang=en
@@ -47,16 +47,17 @@ class transposh_consts {
47
  'ar' => 'Arabic,العربية,sa,',
48
  'hy' => 'Armenian,Հայերեն,am,',
49
  'az' => 'Azerbaijani,azərbaycan dili,az,',
50
- 'eu' => 'Basque,euskara,basque,',
51
  'be' => 'Belarusian,Беларуская,by,',
52
  'bg' => 'Bulgarian,Български,bg,bg_BG',
53
  'ca' => 'Catalan,Català,catalonia,',
54
  'zh' => 'Chinese (Simplified),中文(简体),cn,zh_CN',
55
  'zh-tw' => 'Chinese (Traditional),中文(漢字),tw,zh_TW',
56
  'hr' => 'Croatian,Hrvatski,hr,',
57
- 'cs' => 'Czecheština,cz,cs_CZ',
58
- 'da' => 'Danish,dansk,dk,da_DK',
59
  'nl' => 'Dutch,Nederlands,nl,',
 
60
  'et' => 'Estonian,Eesti keel,ee,',
61
  'fi' => 'Finnish,Suomi,fi,',
62
  'fr' => 'French,Français,fr,fr_FR',
@@ -67,18 +68,18 @@ class transposh_consts {
67
  'ht' => 'Haitian,Kreyòl ayisyen,ht,',
68
  'he' => 'Hebrew,עברית,il,he_IL',
69
  'hi' => 'Hindi,हिन्दी; हिंदी,in,hi_IN',
70
- 'hu' => 'Hungarian,magyar,hu,hu_HU',
71
- 'is' => 'Icelandicslenska,is,',
72
  'id' => 'Indonesian,Bahasa Indonesia,id,id_ID',
73
  'ga' => 'Irish,Gaeilge,ie,',
74
  'it' => 'Italian,Italiano,it,it_IT',
75
  'ja' => 'Japanese,日本語,jp,',
76
  'ko' => 'Korean,우리말,kr,ko_KR',
77
- 'la' => 'Latin,latīna,va,',
78
- 'lv' => 'Latvian,latviešu valoda,lv,',
79
- 'lt' => 'Lithuanian,lietuvių kalba,lt,',
80
  'mk' => 'Macedonian,македонски јазик,mk,mk_MK',
81
- 'ms' => 'Malay,bahasa Melayu,my,ms_MY',
82
  'mt' => 'Maltese,Malti,mt,',
83
  'no' => 'Norwegian,Norsk,no,nb_NO',
84
  'fa' => 'Persian,فارسی,ir,fa_IR',
@@ -86,12 +87,12 @@ class transposh_consts {
86
  'pt' => 'Portuguese,Português,pt,pt_PT',
87
  'ro' => 'Romanian,Română,ro,ro_RO',
88
  'ru' => 'Russian,Русский,ru,ru_RU',
89
- 'sr' => 'Serbian,српски језик,rs,sr_RS',
90
- 'sk' => 'Slovak,slovenčina,sk,sk_SK',
91
- 'sl' => 'Slovene,slovenščina,si,sl_SI', //slovenian
92
  'es' => 'Spanish,Español,es,es_ES',
93
  'sw' => 'Swahili,Kiswahili,ke,',
94
- 'sv' => 'Swedish,svenska,se,sv_SE',
95
  'tl' => 'Tagalog,Tagalog,ph,', // fhilipino
96
  'th' => 'Thai,ภาษาไทย,th,',
97
  'tr' => 'Turkish,Türkçe,tr,tr_TR',
@@ -113,7 +114,11 @@ class transposh_consts {
113
  // (got this using Microsoft.Translator.GetLanguages() - fixed to match our codes)
114
  // @updated 2010-Jun-30
115
  public static $bing_languages = array('en', 'ar', 'bg', 'zh', 'zh-tw', 'cs', 'da', 'nl', 'et', 'fi', 'fr', 'de', 'el', 'ht', 'he', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'lt', 'no', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'es', 'sv', 'th', 'tr', 'uk', 'vi');
116
- // Array for holding po domains we have problems with
 
 
 
 
117
  public static $ignored_po_domains = array('MailPress');
118
 
119
  }
@@ -122,7 +127,7 @@ class transposh_consts {
122
  define('TRANSLATOR', 'translator');
123
 
124
  //Define for transposh plugin version
125
- define('TRANSPOSH_PLUGIN_VER', '0.6.7');
126
 
127
  //Define segment id prefix, will be included in span tag. also used as class identifier
128
  define('SPAN_PREFIX', 'tr_');
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  //Language indicator in URL. i.e. lang=en
47
  'ar' => 'Arabic,العربية,sa,',
48
  'hy' => 'Armenian,Հայերեն,am,',
49
  'az' => 'Azerbaijani,azərbaycan dili,az,',
50
+ 'eu' => 'Basque,Euskara,basque,',
51
  'be' => 'Belarusian,Беларуская,by,',
52
  'bg' => 'Bulgarian,Български,bg,bg_BG',
53
  'ca' => 'Catalan,Català,catalonia,',
54
  'zh' => 'Chinese (Simplified),中文(简体),cn,zh_CN',
55
  'zh-tw' => 'Chinese (Traditional),中文(漢字),tw,zh_TW',
56
  'hr' => 'Croatian,Hrvatski,hr,',
57
+ 'cs' => 'Czecheština,cz,cs_CZ',
58
+ 'da' => 'Danish,Dansk,dk,da_DK',
59
  'nl' => 'Dutch,Nederlands,nl,',
60
+ 'eo' => 'Esperanto,Esperanto,esperanto,',
61
  'et' => 'Estonian,Eesti keel,ee,',
62
  'fi' => 'Finnish,Suomi,fi,',
63
  'fr' => 'French,Français,fr,fr_FR',
68
  'ht' => 'Haitian,Kreyòl ayisyen,ht,',
69
  'he' => 'Hebrew,עברית,il,he_IL',
70
  'hi' => 'Hindi,हिन्दी; हिंदी,in,hi_IN',
71
+ 'hu' => 'Hungarian,Magyar,hu,hu_HU',
72
+ 'is' => 'Icelandicslenska,is,',
73
  'id' => 'Indonesian,Bahasa Indonesia,id,id_ID',
74
  'ga' => 'Irish,Gaeilge,ie,',
75
  'it' => 'Italian,Italiano,it,it_IT',
76
  'ja' => 'Japanese,日本語,jp,',
77
  'ko' => 'Korean,우리말,kr,ko_KR',
78
+ 'la' => 'Latin,Latīna,va,',
79
+ 'lv' => 'Latvian,Latviešu valoda,lv,',
80
+ 'lt' => 'Lithuanian,Lietuvių kalba,lt,',
81
  'mk' => 'Macedonian,македонски јазик,mk,mk_MK',
82
+ 'ms' => 'Malay,Bahasa Melayu,my,ms_MY',
83
  'mt' => 'Maltese,Malti,mt,',
84
  'no' => 'Norwegian,Norsk,no,nb_NO',
85
  'fa' => 'Persian,فارسی,ir,fa_IR',
87
  'pt' => 'Portuguese,Português,pt,pt_PT',
88
  'ro' => 'Romanian,Română,ro,ro_RO',
89
  'ru' => 'Russian,Русский,ru,ru_RU',
90
+ 'sr' => 'Serbian,Cрпски језик,rs,sr_RS',
91
+ 'sk' => 'Slovak,Slovenčina,sk,sk_SK',
92
+ 'sl' => 'Slovene,Slovenščina,si,sl_SI', //slovenian
93
  'es' => 'Spanish,Español,es,es_ES',
94
  'sw' => 'Swahili,Kiswahili,ke,',
95
+ 'sv' => 'Swedish,Svenska,se,sv_SE',
96
  'tl' => 'Tagalog,Tagalog,ph,', // fhilipino
97
  'th' => 'Thai,ภาษาไทย,th,',
98
  'tr' => 'Turkish,Türkçe,tr,tr_TR',
114
  // (got this using Microsoft.Translator.GetLanguages() - fixed to match our codes)
115
  // @updated 2010-Jun-30
116
  public static $bing_languages = array('en', 'ar', 'bg', 'zh', 'zh-tw', 'cs', 'da', 'nl', 'et', 'fi', 'fr', 'de', 'el', 'ht', 'he', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'lt', 'no', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'es', 'sv', 'th', 'tr', 'uk', 'vi');
117
+ // Apertium supported languages
118
+ // a bit tricky, but we'll see - starting with just esperanto
119
+ public static $apertium_languages = array('eo');
120
+
121
+ // Array for holding po domains we have problems with
122
  public static $ignored_po_domains = array('MailPress');
123
 
124
  }
127
  define('TRANSLATOR', 'translator');
128
 
129
  //Define for transposh plugin version
130
+ define('TRANSPOSH_PLUGIN_VER', '0.7.0');
131
 
132
  //Define segment id prefix, will be included in span tag. also used as class identifier
133
  define('SPAN_PREFIX', 'tr_');
core/parser.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  require_once("shd/simple_html_dom.php");
@@ -101,10 +101,11 @@ class parser {
101
  public $lang;
102
  /** @var boolean Contains the fact that this language is the default one (only parse other lanaguage spans) */
103
  public $default_lang = false;
 
 
104
  private $inbody = false;
 
105
  private $inselect = false;
106
- /** @var int holds level of non default language */
107
- private $inlangnondef = false;
108
  public $is_edit_mode;
109
  public $is_auto_translate;
110
  public $feed_fix;
@@ -119,6 +120,8 @@ class parser {
119
  private $in_get_text = false;
120
  /** @var boolean Are we inside an inner text %s in gettext */
121
  private $in_get_text_inner = false;
 
 
122
 
123
  /**
124
  * Determine if the current position in buffer is a white space.
@@ -304,6 +307,7 @@ class parser {
304
  $node->phrase = $phrase;
305
  $node->start = $start;
306
  $node->len = strlen($phrase);
 
307
  if ($this->inbody) $node->inbody = $this->inbody;
308
  if ($this->inselect) $node->inselect = true;
309
  }
@@ -330,7 +334,7 @@ class parser {
330
  // Some HTML entities make us break, almost all but apostrophies
331
  if ($len_of_entity = $this->is_html_entity($string, $pos)) {
332
  $entity = substr($string, $pos, $len_of_entity);
333
- if (($this->is_white_space($string[$pos + $len_of_entity]) || $this->is_entity_breaker($entity)) && !$this->is_entity_letter($entity)) {
334
 
335
  $this->tag_phrase($string, $start, $pos);
336
  $start = $pos + $len_of_entity;
@@ -369,7 +373,7 @@ class parser {
369
  //$this->in_get_text_inner = !$this->in_get_text_inner;
370
  }
371
  // will break translation unit when there's a breaker ",.[]()..."
372
- elseif ($senb_len = $this->is_sentence_breaker($string[$pos], $string[$pos + 1], $string[$pos + 2])) {
373
  //
374
  $this->tag_phrase($string, $start, $pos);
375
  $pos += $senb_len;
@@ -380,12 +384,12 @@ class parser {
380
  elseif ($num_len = $this->is_number($string, $pos)) {
381
  //
382
  // this is the case of B2 or B2,
383
- if (($this->is_white_space($string[$pos - 1]) || ($start == $pos)
384
  || ($this->is_sentence_breaker($string[$pos + $num_len - 1], $string[$pos + $num_len], $string[$pos + $num_len + 1]))) &&
385
- ($this->is_white_space($string[$pos + $num_len]) || $this->is_sentence_breaker($string[$pos + $num_len], $string[$pos + $num_len + 1], $string[$pos + $num_len + 2]))) {
386
  // we will now compensate on the number followed by breaker case, if we need to
387
  //
388
- if (!($this->is_white_space($string[$pos - 1]) || ($start == $pos))) {
389
  //
390
  if ($this->is_sentence_breaker($string[$pos + $num_len - 1], $string[$pos + $num_len], $string[$pos + $num_len + 1])) {
391
  //
@@ -418,52 +422,50 @@ class parser {
418
  * it currently also rewrites urls, and should consider if this is smart
419
  * @param simple_html_dom_node $node
420
  */
421
- function translate_tagging($node, $level = 0, $lang = null) {
422
  $this->currentnode = $node;
423
  // we don't want to translate non-translatable classes
424
  if (stripos($node->class, NO_TRANSLATE_CLASS) !== false || stripos($node->class, NO_TRANSLATE_CLASS_GOOGLE) !== false)
425
  return;
426
 
427
  // the node lang is the current node lang or its parent lang
428
- $lang = $node->lang ? $node->lang : $lang;
429
- // we avoid processing if the node lang is the target lang, however - we recurse with that lang
430
- if (strtolower($lang) === $this->lang) {
431
- foreach ($node->nodes as $c) {
432
- $this->translate_tagging($c, $level + 1, $lang);
433
- }
434
- return;
 
435
  }
436
 
437
- if ($this->inselect && $level <= $this->inselect)
438
- $this->inselect = false;
439
-
440
- if ($this->inlangnondef && $level <= $this->inlangnondef)
441
- $this->inlangnondef = false;
442
-
443
- if ($this->default_lang && $node->lang != '' && stripos($node->lang, $this->lang) === false)
444
- $this->inlangnondef = $level;
445
-
446
  // we can only do translation for elements which are in the body, not in other places, and this must
447
  // move here due to the possibility of early recurse in default language
448
  if ($node->tag == 'body') {
449
  $this->inbody = true;
450
  }
 
451
  // this again should be here, the different behaviour on select and textarea
 
452
  elseif ($node->tag == 'select' || $node->tag == 'textarea' || $node->tag == 'noscript') {
453
- $this->inselect = $level;
 
454
  }
455
 
456
  //support only_thislanguage class, (nulling the node if it should not display)
457
- if (strtolower($node->lang) != $this->lang && stripos($node->class, ONLY_THISLANGUAGE_CLASS) !== false) {
458
  $node->outertext = '';
459
  return;
460
  }
461
 
462
  // if we are in the default lang, and we have no foreign langs classes, we'll recurse from here
463
- if ($this->default_lang && !$this->inlangnondef) {
 
464
  foreach ($node->nodes as $c) {
465
  $this->translate_tagging($c, $level + 1);
466
  }
 
 
467
  return;
468
  }
469
 
@@ -502,14 +504,18 @@ class parser {
502
  // titles are also good places to translate, exist in a, img, abbr, acronym
503
  if ($node->title) $this->parsetext($node->title);
504
 
505
- // Meta content (keywords, description) are also good places to translate
506
- if ($node->tag == 'meta' && $node->content)
507
  $this->parsetext($node->content);
508
 
509
  // recurse
510
  foreach ($node->nodes as $c) {
511
  $this->translate_tagging($c, $level + 1);
512
  }
 
 
 
 
513
  }
514
 
515
  /**
@@ -518,12 +524,17 @@ class parser {
518
  * @param string $translated_text
519
  * @param int $source (Either "0" for Human, "1" for Machine or "" for untouched)
520
  * @param boolean $for_hidden_element
 
521
  * @return string
522
  */
523
- function create_edit_span($original_text, $translated_text, $source, $for_hidden_element = false) {
524
  // Use base64 encoding to make that when the page is translated (i.e. update_translation) we
525
  // get back exactlly the same string without having the client decode/encode it in anyway.
526
  $span = '<span class ="' . SPAN_PREFIX . '" id="' . SPAN_PREFIX . $this->span_id . '" data-token="' . transposh_utils::base64_url_encode($original_text) . '" data-source="' . $source . '"';
 
 
 
 
527
  // those are needed for on the fly image creation / hidden elements translations
528
  if ($this->is_edit_mode || $for_hidden_element) {
529
  $span .= ' data-orig="' . $original_text . '"';
@@ -657,6 +668,10 @@ class parser {
657
  call_user_func_array($this->prefetch_translate_func, array($originals, $this->lang));
658
  }
659
 
 
 
 
 
660
  // actually translate tags
661
  // texts are first
662
  foreach ($this->html->find('text') as $e) {
@@ -670,10 +685,12 @@ class parser {
670
  if ($source == 0) $this->stats->human_translated_phrases++;
671
  }
672
  if (($this->is_edit_mode || ($this->is_auto_translate && $translated_text == null))/* && $ep->inbody */) {
673
- if ($ep->inselect || !$ep->inbody) {
674
- $savedspan .= $this->create_edit_span($ep->phrase, $translated_text, $source, true);
 
 
675
  } else {
676
- $translated_text = $this->create_edit_span($ep->phrase, $translated_text, $source);
677
  }
678
  }
679
  // store replacements
@@ -700,7 +717,7 @@ class parser {
700
  $replace = array();
701
  $span = '';
702
  // when we already have a parent outertext we'll have to update it directly
703
- if ($e->parent->_[HDOM_INFO_OUTER]) {
704
  $saved_outertext = $e->outertext;
705
  }
706
 
@@ -725,7 +742,7 @@ class parser {
725
  //no need to translate span the same hidden phrase more than once
726
  if (!in_array($ep->phrase, $hidden_phrases)) {
727
  $this->stats->hidden_translateable_phrases++;
728
- $span .= $this->create_edit_span($ep->phrase, $translated_text, $source, true);
729
  //
730
  $hidden_phrases[] = $ep->phrase;
731
  }
@@ -744,14 +761,15 @@ class parser {
744
 
745
  $e->outertext .= $span;
746
  // this is where we update in the outercase issue
747
- if ($e->parent->_[HDOM_INFO_OUTER]) {
748
  $e->parent->outertext = implode($e->outertext, explode($saved_outertext, $e->parent->outertext, 2));
749
  }
750
  }
751
  }
752
 
753
- // now we handle the meta content - which is simpler because they can't be edited or auto-translated
754
  // we also don't expect any father modifications here
 
755
  foreach ($this->html->find('[content]') as $e) {
756
  $right = '';
757
  $newtext = '';
@@ -771,6 +789,14 @@ class parser {
771
  $newtext .= $left . $translated_text;
772
  $e->content = $right;
773
  }
 
 
 
 
 
 
 
 
774
  }
775
  }
776
  if ($newtext) {
@@ -778,6 +804,11 @@ class parser {
778
 
779
  }
780
  }
 
 
 
 
 
781
  // only in 5 out of 100 pages, with just translated pages, we might show an ad for transposh
782
  if ($this->allow_ad && !$this->default_lang && mt_rand(1, 100) > 95) {
783
  $this->do_ad_switch();
@@ -785,6 +816,7 @@ class parser {
785
  // This adds a meta tag with our statistics json-encoded inside...
786
  $this->stats->stop_timing();
787
  $head = $this->html->find('head', 0);
 
788
  if ($head != null)
789
  $head->lastChild()->outertext .= "\n<meta name=\"translation-stats\" content='" . json_encode($this->stats) . "'/>";
790
 
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  require_once("shd/simple_html_dom.php");
101
  public $lang;
102
  /** @var boolean Contains the fact that this language is the default one (only parse other lanaguage spans) */
103
  public $default_lang = false;
104
+ /** @var string Contains the iso of the source language - if a lang attribute is found */
105
+ public $srclang;
106
  private $inbody = false;
107
+ /** @var hold fact that we are in select or other similar elements */
108
  private $inselect = false;
 
 
109
  public $is_edit_mode;
110
  public $is_auto_translate;
111
  public $feed_fix;
120
  private $in_get_text = false;
121
  /** @var boolean Are we inside an inner text %s in gettext */
122
  private $in_get_text_inner = false;
123
+ /** @var string Additional header information */
124
+ public $added_header;
125
 
126
  /**
127
  * Determine if the current position in buffer is a white space.
307
  $node->phrase = $phrase;
308
  $node->start = $start;
309
  $node->len = strlen($phrase);
310
+ if ($this->srclang) $node->srclang = $this->srclang;
311
  if ($this->inbody) $node->inbody = $this->inbody;
312
  if ($this->inselect) $node->inselect = true;
313
  }
334
  // Some HTML entities make us break, almost all but apostrophies
335
  if ($len_of_entity = $this->is_html_entity($string, $pos)) {
336
  $entity = substr($string, $pos, $len_of_entity);
337
+ if (($this->is_white_space(@$string[$pos + $len_of_entity]) || $this->is_entity_breaker($entity)) && !$this->is_entity_letter($entity)) {
338
 
339
  $this->tag_phrase($string, $start, $pos);
340
  $start = $pos + $len_of_entity;
373
  //$this->in_get_text_inner = !$this->in_get_text_inner;
374
  }
375
  // will break translation unit when there's a breaker ",.[]()..."
376
+ elseif ($senb_len = $this->is_sentence_breaker($string[$pos], @$string[$pos + 1], @$string[$pos + 2])) {
377
  //
378
  $this->tag_phrase($string, $start, $pos);
379
  $pos += $senb_len;
384
  elseif ($num_len = $this->is_number($string, $pos)) {
385
  //
386
  // this is the case of B2 or B2,
387
+ if (($start == $pos) || ($this->is_white_space($string[$pos - 1])
388
  || ($this->is_sentence_breaker($string[$pos + $num_len - 1], $string[$pos + $num_len], $string[$pos + $num_len + 1]))) &&
389
+ ($this->is_white_space(@$string[$pos + $num_len]) || $this->is_sentence_breaker(@$string[$pos + $num_len], @$string[$pos + $num_len + 1], @$string[$pos + $num_len + 2]))) {
390
  // we will now compensate on the number followed by breaker case, if we need to
391
  //
392
+ if (!(($start == $pos) || $this->is_white_space($string[$pos - 1]))) {
393
  //
394
  if ($this->is_sentence_breaker($string[$pos + $num_len - 1], $string[$pos + $num_len], $string[$pos + $num_len + 1])) {
395
  //
422
  * it currently also rewrites urls, and should consider if this is smart
423
  * @param simple_html_dom_node $node
424
  */
425
+ function translate_tagging($node, $level = 0) {
426
  $this->currentnode = $node;
427
  // we don't want to translate non-translatable classes
428
  if (stripos($node->class, NO_TRANSLATE_CLASS) !== false || stripos($node->class, NO_TRANSLATE_CLASS_GOOGLE) !== false)
429
  return;
430
 
431
  // the node lang is the current node lang or its parent lang
432
+ if ($node->lang) {
433
+ // allow nesting of srclang (again - local var)
434
+ $prevsrclang = $this->srclang;
435
+ $this->srclang = strtolower($node->lang);
436
+ // using a local variable scope for later
437
+ $src_set_here = true;
438
+ // eliminate the lang tag from the html, since we aim to translate it
439
+ unset($node->lang);
440
  }
441
 
 
 
 
 
 
 
 
 
 
442
  // we can only do translation for elements which are in the body, not in other places, and this must
443
  // move here due to the possibility of early recurse in default language
444
  if ($node->tag == 'body') {
445
  $this->inbody = true;
446
  }
447
+
448
  // this again should be here, the different behaviour on select and textarea
449
+ // for now - we assume that they can't include each other
450
  elseif ($node->tag == 'select' || $node->tag == 'textarea' || $node->tag == 'noscript') {
451
+ $this->inselect = true;
452
+ $inselect_set_here = true;
453
  }
454
 
455
  //support only_thislanguage class, (nulling the node if it should not display)
456
+ if (isset($src_set_here) && $src_set_here && $this->srclang != $this->lang && stripos($node->class, ONLY_THISLANGUAGE_CLASS) !== false) {
457
  $node->outertext = '';
458
  return;
459
  }
460
 
461
  // if we are in the default lang, and we have no foreign langs classes, we'll recurse from here
462
+ // we also avoid processing if the node lang is the target lang
463
+ if (($this->default_lang && !$this->srclang) || ($this->srclang === $this->lang)) {
464
  foreach ($node->nodes as $c) {
465
  $this->translate_tagging($c, $level + 1);
466
  }
467
+ if (isset($src_set_here) && $src_set_here)
468
+ $this->srclang = $prevsrclang;
469
  return;
470
  }
471
 
504
  // titles are also good places to translate, exist in a, img, abbr, acronym
505
  if ($node->title) $this->parsetext($node->title);
506
 
507
+ // Meta content (keywords, description) are also good places to translate (but not in robots... or http-equiv)
508
+ if ($node->tag == 'meta' && $node->content && ($node->name != 'robots') && ($node->{'http-equiv'} != 'Content-Type'))
509
  $this->parsetext($node->content);
510
 
511
  // recurse
512
  foreach ($node->nodes as $c) {
513
  $this->translate_tagging($c, $level + 1);
514
  }
515
+ if (isset($src_set_here) && $src_set_here)
516
+ $this->srclang = $prevsrclang;
517
+ if (isset($inselect_set_here) && $inselect_set_here)
518
+ $this->inselect = false;
519
  }
520
 
521
  /**
524
  * @param string $translated_text
525
  * @param int $source (Either "0" for Human, "1" for Machine or "" for untouched)
526
  * @param boolean $for_hidden_element
527
+ * @param string $src_lang - if source lang of element is different that default (eg. wrapped in lang="xx" attr)
528
  * @return string
529
  */
530
+ function create_edit_span($original_text, $translated_text, $source, $for_hidden_element = false, $src_lang = '') {
531
  // Use base64 encoding to make that when the page is translated (i.e. update_translation) we
532
  // get back exactlly the same string without having the client decode/encode it in anyway.
533
  $span = '<span class ="' . SPAN_PREFIX . '" id="' . SPAN_PREFIX . $this->span_id . '" data-token="' . transposh_utils::base64_url_encode($original_text) . '" data-source="' . $source . '"';
534
+ // if we have a source language
535
+ if ($src_lang) {
536
+ $span .= ' data-srclang="' . $src_lang . '"';
537
+ }
538
  // those are needed for on the fly image creation / hidden elements translations
539
  if ($this->is_edit_mode || $for_hidden_element) {
540
  $span .= ' data-orig="' . $original_text . '"';
668
  call_user_func_array($this->prefetch_translate_func, array($originals, $this->lang));
669
  }
670
 
671
+ // this is used to reserve spans we cannot add directly (out of body, metas, etc)
672
+ $hiddenspans = '';
673
+ $savedspan = '';
674
+
675
  // actually translate tags
676
  // texts are first
677
  foreach ($this->html->find('text') as $e) {
685
  if ($source == 0) $this->stats->human_translated_phrases++;
686
  }
687
  if (($this->is_edit_mode || ($this->is_auto_translate && $translated_text == null))/* && $ep->inbody */) {
688
+ if ($ep->inselect) {
689
+ $savedspan .= $this->create_edit_span($ep->phrase, $translated_text, $source, true, $ep->srclang);
690
+ } elseif (!$ep->inbody) {
691
+ $hiddenspans .= $this->create_edit_span($ep->phrase, $translated_text, $source, true, $ep->srclang);
692
  } else {
693
+ $translated_text = $this->create_edit_span($ep->phrase, $translated_text, $source, false, $ep->srclang);
694
  }
695
  }
696
  // store replacements
717
  $replace = array();
718
  $span = '';
719
  // when we already have a parent outertext we'll have to update it directly
720
+ if (isset($e->parent->_[HDOM_INFO_OUTER])) {
721
  $saved_outertext = $e->outertext;
722
  }
723
 
742
  //no need to translate span the same hidden phrase more than once
743
  if (!in_array($ep->phrase, $hidden_phrases)) {
744
  $this->stats->hidden_translateable_phrases++;
745
+ $span .= $this->create_edit_span($ep->phrase, $translated_text, $source, true, $ep->srclang);
746
  //
747
  $hidden_phrases[] = $ep->phrase;
748
  }
761
 
762
  $e->outertext .= $span;
763
  // this is where we update in the outercase issue
764
+ if (isset($e->parent->_[HDOM_INFO_OUTER])) {
765
  $e->parent->outertext = implode($e->outertext, explode($saved_outertext, $e->parent->outertext, 2));
766
  }
767
  }
768
  }
769
 
770
+ // now we handle the meta content - which is simpler because they can't be edited or auto-translated in place
771
  // we also don't expect any father modifications here
772
+ // so we now add all those spans right before the <body> tag end
773
  foreach ($this->html->find('[content]') as $e) {
774
  $right = '';
775
  $newtext = '';
789
  $newtext .= $left . $translated_text;
790
  $e->content = $right;
791
  }
792
+ if ($this->is_edit_mode) {
793
+ $hiddenspans .= $this->create_edit_span($ep->phrase, $translated_text, $source, true, $ep->srclang);
794
+ }
795
+ if (!$translated_text && $this->is_auto_translate && !$this->is_edit_mode) {
796
+
797
+ if ($this->is_edit_mode || $this->is_auto_translate) { // FIX
798
+ }
799
+ }
800
  }
801
  }
802
  if ($newtext) {
804
 
805
  }
806
  }
807
+
808
+ if ($hiddenspans) {
809
+ $body = $this->html->find('body', 0);
810
+ if ($body != null) $body->lastChild()->outertext .= $hiddenspans;
811
+ }
812
  // only in 5 out of 100 pages, with just translated pages, we might show an ad for transposh
813
  if ($this->allow_ad && !$this->default_lang && mt_rand(1, 100) > 95) {
814
  $this->do_ad_switch();
816
  // This adds a meta tag with our statistics json-encoded inside...
817
  $this->stats->stop_timing();
818
  $head = $this->html->find('head', 0);
819
+ if ($head != null) $head->lastChild()->outertext .= $this->added_header;
820
  if ($head != null)
821
  $head->lastChild()->outertext .= "\n<meta name=\"translation-stats\" content='" . json_encode($this->stats) . "'/>";
822
 
core/utils.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /**
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /**
css/keyboard.css ADDED
@@ -0,0 +1 @@
 
1
+ #keyboardInputMaster{position:absolute;font:normal 11px Arial,sans-serif;border-top:1px solid #eee;border-right:1px solid #888;border-bottom:1px solid #444;border-left:1px solid #ccc;-webkit-border-radius:.6em;-moz-border-radius:.6em;border-radius:.6em;-webkit-box-shadow:0 2px 10px #444;-moz-box-shadow:0 2px 10px #444;box-shadow:0 2px 10px #444;opacity:.95;filter:alpha(opacity=95);background-color:#ddd;text-align:left;z-index:1000000;width:auto;height:auto;min-width:0;min-height:0;margin:0;padding:0;line-height:normal;-moz-user-select:none;cursor:default;}#keyboardInputMaster *{position:static;color:#000;background:transparent;font:normal 11px Arial,sans-serif;width:auto;height:auto;min-width:0;min-height:0;margin:0;padding:0;border:0 none;outline:0;vertical-align:baseline;line-height:1.3em;}#keyboardInputMaster.keyboardInputSize1,#keyboardInputMaster.keyboardInputSize1 *{font-size:9px;}#keyboardInputMaster.keyboardInputSize3,#keyboardInputMaster.keyboardInputSize3 *{font-size:13px;}#keyboardInputMaster.keyboardInputSize4,#keyboardInputMaster.keyboardInputSize4 *{font-size:16px;}#keyboardInputMaster.keyboardInputSize5,#keyboardInputMaster.keyboardInputSize5 *{font-size:20px;}#keyboardInputMaster thead tr th{padding:.3em .3em .1em .3em;background-color:#999;white-space:nowrap;text-align:right;-webkit-border-radius:.6em .6em 0 0;-moz-border-radius:.6em .6em 0 0;border-radius:.6em .6em 0 0;}#keyboardInputMaster thead tr th div{float:left;font-size:130%!important;height:1.3em;font-weight:bold;position:relative;z-index:1;margin-right:.5em;cursor:pointer;background-color:transparent;}#keyboardInputMaster thead tr th div ol{position:absolute;left:0;top:90%;list-style-type:none;height:9.4em;overflow-y:auto;overflow-x:hidden;background-color:#f6f6f6;border:1px solid #999;display:none;text-align:left;width:12em;}#keyboardInputMaster thead tr th div ol li{padding:.2em .4em;cursor:pointer;white-space:nowrap;width:12em;}#keyboardInputMaster thead tr th div ol li.selected{background-color:#ffc;}#keyboardInputMaster thead tr th div ol li:hover,#keyboardInputMaster thead tr th div ol li.hover{background-color:#ddd;}#keyboardInputMaster thead tr th span,#keyboardInputMaster thead tr th strong,#keyboardInputMaster thead tr th small,#keyboardInputMaster thead tr th big{display:inline-block;padding:0 .4em;height:1.4em;line-height:1.4em;border-top:1px solid #e5e5e5;border-right:1px solid #5d5d5d;border-bottom:1px solid #5d5d5d;border-left:1px solid #e5e5e5;background-color:#ccc;cursor:pointer;margin:0 0 0 .3em;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;vertical-align:middle;-webkit-transition:background-color .15s ease-in-out;-o-transition:background-color .15s ease-in-out;transition:background-color .15s ease-in-out;}#keyboardInputMaster thead tr th strong{font-weight:bold;}#keyboardInputMaster thead tr th small{-webkit-border-radius:.3em 0 0 .3em;-moz-border-radius:.3em 0 0 .3em;border-radius:.3em 0 0 .3em;border-right:1px solid #aaa;padding:0 .2em 0 .3em;}#keyboardInputMaster thead tr th big{-webkit-border-radius:0 .3em .3em 0;-moz-border-radius:0 .3em .3em 0;border-radius:0 .3em .3em 0;border-left:0 none;margin:0;padding:0 .3em 0 .2em;}#keyboardInputMaster thead tr th span:hover,#keyboardInputMaster thead tr th span.hover,#keyboardInputMaster thead tr th strong:hover,#keyboardInputMaster thead tr th strong.hover,#keyboardInputMaster thead tr th small:hover,#keyboardInputMaster thead tr th small.hover,#keyboardInputMaster thead tr th big:hover,#keyboardInputMaster thead tr th big.hover{background-color:#ddd;}#keyboardInputMaster tbody tr td{text-align:left;padding:.2em .3em .3em .3em;vertical-align:top;}#keyboardInputMaster tbody tr td div{text-align:center;position:relative;zoom:1;}#keyboardInputMaster tbody tr td table{white-space:nowrap;width:100%;border-collapse:separate;border-spacing:0;}#keyboardInputMaster tbody tr td#keyboardInputNumpad table{margin-left:.2em;width:auto;}#keyboardInputMaster tbody tr td table.keyboardInputCenter{width:auto;margin:0 auto;}#keyboardInputMaster tbody tr td table tbody tr td{vertical-align:middle;padding:0 .45em;white-space:pre;height:1.8em;font-family:'Lucida Console','Arial Unicode MS',monospace;border-top:1px solid #e5e5e5;border-right:1px solid #5d5d5d;border-bottom:1px solid #5d5d5d;border-left:1px solid #e5e5e5;background-color:#eee;cursor:default;min-width:.75em;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-webkit-transition:background-color .15s ease-in-out;-o-transition:background-color .15s ease-in-out;transition:background-color .15s ease-in-out;}#keyboardInputMaster tbody tr td table tbody tr td.last{width:99%;}#keyboardInputMaster tbody tr td table tbody tr td.space{padding:0 4em;}#keyboardInputMaster tbody tr td table tbody tr td.deadkey{background-color:#ccd;}#keyboardInputMaster tbody tr td table tbody tr td.target{background-color:#ddc;}#keyboardInputMaster tbody tr td table tbody tr td:hover,#keyboardInputMaster tbody tr td table tbody tr td.hover{border-top:1px solid #d5d5d5;border-right:1px solid #555;border-bottom:1px solid #555;border-left:1px solid #d5d5d5;background-color:#ccc;}#keyboardInputMaster thead tr th span:active,#keyboardInputMaster thead tr th span.pressed,#keyboardInputMaster tbody tr td table tbody tr td:active,#keyboardInputMaster tbody tr td table tbody tr td.pressed{border-top:1px solid #555!important;border-right:1px solid #d5d5d5;border-bottom:1px solid #d5d5d5;border-left:1px solid #555;background-color:#ccc;}#keyboardInputMaster tbody tr td table tbody tr td small{display:block;text-align:center;font-size:.6em!important;line-height:1.1em;}#keyboardInputMaster tbody tr td div label{position:absolute;bottom:.2em;left:.3em;}#keyboardInputMaster tbody tr td div label input{background-color:#f6f6f6;vertical-align:middle;font-size:inherit;width:1.1em;height:1.1em;}#keyboardInputMaster tbody tr td div var{position:absolute;bottom:0;right:3px;font-weight:bold;font-style:italic;color:#444;}.keyboardInputInitiator{margin:0 3px;vertical-align:middle;cursor:pointer;}
css/transposh.css CHANGED
@@ -1 +1 @@
1
- .tr-icon{background-image:url(../img/tr_imgs.png);height:12px;width:12px;background-repeat:no-repeat;overflow:hidden;text-indent:-99999px;display:inline-block;}.tr-icon-yellow{background-position:-12px 0;}.tr-icon-green{background-position:-24px 0;}
1
+ .tr-icon{background-image:url(../img/tr_imgs.png);height:12px;width:12px;background-repeat:no-repeat;overflow:hidden;text-indent:-99999px;display:inline-block;cursor:pointer;}.tr-icon-yellow{background-position:-12px 0;}.tr-icon-green{background-position:-24px 0;}.tr-icon-google{background-image:url(../img/googleicon.png)!important;}.tr-icon-bing{background-image:url(../img/bingicon.png)!important;}.tr-icon-apertium{background-image:url(../img/apertiumicon.png)!important;}
img/apertiumicon.png ADDED
Binary file
img/flags/esperanto.png ADDED
Binary file
img/flags60.png ADDED
Binary file
js/jquery.ui.menu.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Menu @VERSION
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Menu
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ * jquery.ui.widget.js
13
+ */
14
+ (function(c){var i=0;c.widget("ui.menu",{_create:function(){var a=this;this.menuId=this.element.attr("id")||"ui-menu-"+i++;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({id:this.menuId,role:"listbox"}).bind("click.menu",function(b){if(a.options.disabled)return false;if(c(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}}).bind("mouseover.menu",function(b){if(!a.options.disabled){var d=c(b.target).closest(".ui-menu-item");d.length&&d.parent()[0]===
15
+ a.element[0]&&a.activate(b,d)}}).bind("mouseout.menu",function(b){if(!a.options.disabled){var d=c(b.target).closest(".ui-menu-item");d.length&&d.parent()[0]===a.element[0]&&a.deactivate(b)}});this.refresh();if(!this.options.input)this.options.input=this.element.attr("tabIndex",0);this.options.input.bind("keydown.menu",function(b){if(!a.options.disabled)switch(b.keyCode){case c.ui.keyCode.PAGE_UP:a.previousPage();b.preventDefault();b.stopImmediatePropagation();break;case c.ui.keyCode.PAGE_DOWN:a.nextPage();
16
+ b.preventDefault();b.stopImmediatePropagation();break;case c.ui.keyCode.UP:a.previous();b.preventDefault();b.stopImmediatePropagation();break;case c.ui.keyCode.DOWN:a.next();b.preventDefault();b.stopImmediatePropagation();break;case c.ui.keyCode.ENTER:a.select();b.preventDefault();b.stopImmediatePropagation()}})},destroy:function(){c.Widget.prototype.destroy.apply(this,arguments);this.element.removeClass("ui-menu ui-widget ui-widget-content ui-corner-all").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-activedescendant");
17
+ this.element.children(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").children("a").removeClass("ui-corner-all").removeAttr("tabIndex").unbind(".menu")},refresh:function(){this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabIndex",-1)},activate:function(a,b){var d=this;this.deactivate();if(this._hasScroll()){var e=parseFloat(c.curCSS(this.element[0],"borderTopWidth",true))||0,f=parseFloat(c.curCSS(this.element[0],
18
+ "paddingTop",true))||0;e=b.offset().top-this.element.offset().top-e-f;f=this.element.attr("scrollTop");var g=this.element.height(),h=b.height();if(e<0)this.element.attr("scrollTop",f+e);else e+h>g&&this.element.attr("scrollTop",f+e-g+h)}this.active=b.first().children("a").addClass("ui-state-hover").attr("id",function(k,j){return d.itemId=j||d.menuId+"-activedescendant"}).end();this.element.removeAttr("aria-activedescenant").attr("aria-activedescenant",d.itemId);this._trigger("focus",a,{item:b})},
19
+ deactivate:function(a){if(this.active){this.active.children("a").removeClass("ui-state-hover");c("#"+this.menuId+"-activedescendant").removeAttr("id");this.element.removeAttr("aria-activedescenant");this._trigger("blur",a);this.active=null}},next:function(a){this._move("next",".ui-menu-item","first",a)},previous:function(a){this._move("prev",".ui-menu-item","last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},
20
+ _move:function(a,b,d,e){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(e,a):this.activate(e,this.element.children(b)[d]())}else this.activate(e,this.element.children(b)[d]())},nextPage:function(a){if(this._hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item").first());else{var b=this.active.offset().top,d=this.element.height(),e;this.active.nextAll(".ui-menu-item").each(function(){e=c(this);return c(this).offset().top-
21
+ b-d<0});this.activate(a,e)}else this.activate(a,this.element.children(".ui-menu-item")[!this.active||this.last()?"first":"last"]())},previousPage:function(a){if(this._hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item").last());else{var b=this.active.offset().top,d=this.element.height(),e;this.active.prevAll(".ui-menu-item").each(function(){e=c(this);return c(this).offset().top-b+d>0});this.activate(a,e)}else this.activate(a,this.element.children(".ui-menu-item")[!this.active||
22
+ this.first()?":last":":first"]())},_hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("select",a,{item:this.active})}})})(jQuery);
js/keyboard.js ADDED
@@ -0,0 +1,289 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ********************************************************************
2
+ **********************************************************************
3
+ * HTML Virtual Keyboard Interface Script - v1.44
4
+ * Copyright (c) 2010 - GreyWyvern
5
+ *
6
+ * - Licenced for free distribution under the BSDL
7
+ * http://www.opensource.org/licenses/bsd-license.php
8
+ *
9
+ * Add a script-driven keyboard interface to text fields, password
10
+ * fields and textareas.
11
+ *
12
+ * See http://www.greywyvern.com/code/javascript/keyboard for examples
13
+ * and usage instructions.
14
+ *
15
+ * Version 1.44 - December 24, 2010
16
+ * - Fixed keyboard positioning for inputs within scrollable areas
17
+ * - Fixed language adaptation selecting incorrect keyboards
18
+ * - Added support for wider array of ISO language code formats
19
+ * - Prevent entire script from being run twice on page load
20
+ * - Partial fix for Firefox textarea scrolling bugs
21
+ *
22
+ * See full changelog at:
23
+ * http://www.greywyvern.com/code/javascript/keyboard.changelog.txt
24
+ *
25
+ * Keyboard Credits
26
+ * - Khmer keyboard layout by Sovann Heng (km-kh.com)
27
+ * - Dari keyboard layout by Saif Fazel
28
+ * - Kurdish keyboard layout by Ara Qadir
29
+ * - Assamese keyboard layout by Kanchan Gogoi
30
+ * - Bulgarian BDS keyboard layout by Milen Georgiev
31
+ * - Basic Japanese Hiragana/Katakana keyboard layout by Damjan
32
+ * - Ukrainian keyboard layout by Dmitry Nikitin
33
+ * - Macedonian keyboard layout by Damjan Dimitrioski
34
+ * - Pashto keyboard layout by Ahmad Wali Achakzai (qamosona.com)
35
+ * - Armenian Eastern and Western keyboard layouts by Hayastan Project (www.hayastan.co.uk)
36
+ * - Pinyin keyboard layout from a collaboration with Lou Winklemann
37
+ * - Kazakh keyboard layout by Alex Madyankin
38
+ * - Danish keyboard layout by Verner Kjærsgaard
39
+ * - Slovak keyboard layout by Daniel Lara (www.learningslovak.com)
40
+ * - Belarusian and Serbian Cyrillic keyboard layouts by Evgeniy Titov
41
+ * - Bulgarian Phonetic keyboard layout by Samuil Gospodinov
42
+ * - Swedish keyboard layout by Håkan Sandberg
43
+ * - Romanian keyboard layout by Aurel
44
+ * - Farsi (Persian) keyboard layout by Kaveh Bakhtiyari (www.bakhtiyari.com)
45
+ * - Burmese keyboard layout by Cetanapa
46
+ * - Bosnian/Croatian/Serbian Latin/Slovenian keyboard layout by Miran Zeljko
47
+ * - Hungarian keyboard layout by Antal Sall 'Hiromacu'
48
+ * - Arabic keyboard layout by Srinivas Reddy
49
+ * - Italian and Spanish (Spain) keyboard layouts by dictionarist.com
50
+ * - Lithuanian and Russian keyboard layouts by Ramunas
51
+ * - German keyboard layout by QuHno
52
+ * - French keyboard layout by Hidden Evil
53
+ * - Polish Programmers layout by moose
54
+ * - Turkish keyboard layouts by offcu
55
+ * - Dutch and US Int'l keyboard layouts by jerone
56
+ *
57
+ */
58
+ var VKI_attach,VKI_close;
59
+ (function(){function u(b){if(b.nodeName=="TD"){if(!b.click)b.click=function(){var c=this.ownerDocument.createEvent("MouseEvents");c.initMouseEvent("click",true,true,this.ownerDocument.defaultView,1,0,0,0,0,false,false,false,false,0,null);this.dispatchEvent(c)};b.VKI_clickless=0;g(b,"dblclick",function(){return false},false)}g(b,"mouseover",function(){if(this.nodeName=="TD"&&a.VKI_clickless){var c=this;clearTimeout(this.VKI_clickless);this.VKI_clickless=setTimeout(function(){c.click()},a.VKI_clickless)}if(a.VKI_isIE)this.className+=
60
+ " hover"},false);g(b,"mouseout",function(){this.nodeName=="TD"&&clearTimeout(this.VKI_clickless);if(a.VKI_isIE)this.className=this.className.replace(/ ?(hover|pressed) ?/g,"")},false);g(b,"mousedown",function(){this.nodeName=="TD"&&clearTimeout(this.VKI_clickless);if(a.VKI_isIE)this.className+=" pressed"},false);g(b,"mouseup",function(){this.nodeName=="TD"&&clearTimeout(this.VKI_clickless);if(a.VKI_isIE)this.className=this.className.replace(/ ?pressed ?/g,"")},false)}function D(){var b=false,c="\u00a0";
61
+ if(this.firstChild.nodeName.toLowerCase()!="small"){if((c=this.firstChild.nodeValue)=="\u00a0")return false}else c=this.firstChild.getAttribute("char");if(a.VKI_deadkeysOn.checked&&a.VKI_dead)if(a.VKI_dead!=c)if(c!=" "){if(a.VKI_deadkey[a.VKI_dead][c]){a.VKI_insert(a.VKI_deadkey[a.VKI_dead][c]);b=true}}else{a.VKI_insert(a.VKI_dead);b=true}else b=true;a.VKI_dead=false;if(!b)if(a.VKI_deadkeysOn.checked&&a.VKI_deadkey[c]){a.VKI_dead=c;this.className+=" dead";a.VKI_shift&&a.VKI_modify("Shift");a.VKI_altgr&&
62
+ a.VKI_modify("AltGr")}else a.VKI_insert(c);a.VKI_modify("");return false}function g(b,c,d,i){if(b.addEventListener)b.addEventListener(c,function(e){d.call(b,e)},i);else b.attachEvent&&b.attachEvent("on"+c,function(){d.call(b)})}function A(b){for(var c=curtop=0,d=b;d=d.parentNode;){if(d==document.body)break;c-=d.scrollLeft||0;curtop-=d.scrollTop||0}do{c+=b.offsetLeft;curtop+=b.offsetTop}while(b=b.offsetParent);return[c,curtop]}function E(){if(a.innerHeight)return[a.innerWidth,a.innerHeight];else if(document.documentElement&&
63
+ document.documentElement.clientHeight)return[document.documentElement.clientWidth,document.documentElement.clientHeight];else if(document.body)return[document.body.clientWidth,document.body.clientHeight];return[0,0]}function F(){var b=document.getElementsByTagName("html")[0];if(b.scrollTop&&document.documentElement.scrollTop)return[b.scrollLeft,b.scrollTop];else if(b.scrollTop||document.documentElement.scrollTop)return[b.scrollLeft+document.documentElement.scrollLeft,b.scrollTop+document.documentElement.scrollTop];
64
+ else if(document.body.scrollTop)return[document.body.scrollLeft,document.body.scrollTop];return[0,0]}var a=this;this.VKI_version="1.44";this.VKI_deadkeysOn=this.VKI_deadBox=this.VKI_dead=this.VKI_altgr=this.VKI_altgrlock=this.VKI_shift=this.VKI_shiftlock=this.VKI_target=this.VKI_showVersion=false;this.VKI_numberPad=true;this.VKI_numberPadOn=false;this.VKI_kts=this.VKI_kt="US International";this.VKI_langAdapt=true;this.VKI_size=2;this.VKI_sizeAdj=true;this.VKI_clearPasswords=false;this.VKI_imageURI=
65
+ "";this.VKI_clickless=0;this.VKI_keyCenter=3;this.VKI_isIElt8=this.VKI_isIE6=this.VKI_isIE=false;this.VKI_isWebKit=/KHTML/.test(navigator.userAgent);this.VKI_isOpera=/Opera/.test(navigator.userAgent);this.VKI_isMoz=!this.VKI_isWebKit&&navigator.product=="Gecko";this.VKI_i18n={"00":"Display Number Pad","01":"Display virtual keyboard interface","02":"Select keyboard layout","03":"Dead keys","04":"On","05":"Off","06":"Close the keyboard","07":"Clear","08":"Clear this input","09":"Version","10":"Decrease keyboard size",
66
+ "11":"Increase keyboard size"};this.VKI_layout={};this.VKI_layout["\u0627\u0644\u0639\u0631\u0628\u064a\u0629"]={name:"Arabic",keys:[[["\u0630","\u0651 "],["1","!","\u00a1","\u00b9"],["2","@","\u00b2"],["3","#","\u00b3"],["4","$","\u00a4","\u00a3"],["5","%","\u20ac"],["6","^","\u00bc"],["7","&","\u00bd"],["8","*","\u00be"],["9","(","\u2018"],["0",")","\u2019"],["-","_","\u00a5"],["=","+","\u00d7","\u00f7"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0636","\u064e"],["\u0635","\u064b"],["\u062b","\u064f"],
67
+ ["\u0642","\u064c"],["\u0641","\u0644"],["\u063a","\u0625"],["\u0639","\u2018"],["\u0647","\u00f7"],["\u062e","\u00d7"],["\u062d","\u061b"],["\u062c","<"],["\u062f",">"],["\\","|"]],[["Caps","Caps"],["\u0634","\u0650"],["\u0633","\u064d"],["\u064a","]"],["\u0628","["],["\u0644","\u0644"],["\u0627","\u0623"],["\u062a","\u0640"],["\u0646","\u060c"],["\u0645","/"],["\u0643",":"],["\u0637",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u0626","~"],["\u0621","\u0652"],["\u0624","}"],["\u0631","{"],["\u0644",
68
+ "\u0644"],["\u0649","\u0622"],["\u0629","\u2019"],["\u0648",","],["\u0632","."],["\u0638","\u061f"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["ar"]};this.VKI_layout["\u0985\u09b8\u09ae\u09c0\u09df\u09be"]={name:"Assamese",keys:[[["+","?"],["\u09e7","{","\u09e7"],["\u09e8","}","\u09e8"],["\u09e9","\u09cd\u09f0","\u09e9"],["\u09ea","\u09f0\u09cd","\u09ea"],["\u09eb","\u099c\u09cd\u09f0","\u09eb"],["\u09ec","\u0995\u09cd\u09b7","\u09ec"],["\u09ed","\u0995\u09cd\u09f0","\u09ed"],["\u09ee",
69
+ "\u09b6\u09cd\u09f0","\u09ee"],["\u09ef","(","\u09ef"],["\u09e6",")","\u09e6"],["-",""],["\u09c3","\u098b","\u09e2","\u09e0"],["Bksp","Bksp"]],[["Tab","Tab"],["\u09cc","\u0994","\u09d7"],["\u09c8","\u0990"],["\u09be","\u0986"],["\u09c0","\u0988","\u09e3","\u09e1"],["\u09c2","\u098a"],["\u09f1","\u09ad"],["\u09b9","\u0999"],["\u0997","\u0998"],["\u09a6","\u09a7"],["\u099c","\u099d"],["\u09a1","\u09a2","\u09dc","\u09dd"],["Enter","Enter"]],[["Caps","Caps"],["\u09cb","\u0993","\u09f4","\u09f5"],["\u09c7",
70
+ "\u098f","\u09f6","\u09f7"],["\u09cd","\u0985","\u09f8","\u09f9"],["\u09bf","\u0987","\u09e2","\u098c"],["\u09c1","\u0989"],["\u09aa","\u09ab"],["\u09f0","","\u09f0","\u09f1"],["\u0995","\u0996"],["\u09a4","\u09a5"],["\u099a","\u099b"],["\u099f","\u09a0"],["\u09bc","\u099e"]],[["Shift","Shift"],["\u09ce","\u0983"],["\u0982","\u0981","\u09fa"],["\u09ae","\u09a3"],["\u09a8","\u09f7"],["\u09ac",'"'],["\u09b2","'"],["\u09b8","\u09b6"],[",","\u09b7"],[".",";"],["\u09af","\u09df"],["Shift","Shift"]],[[" ",
71
+ " "," "," "],["AltGr","AltGr"]]],lang:["as"]};this.VKI_layout["\u0410\u0437\u04d9\u0440\u0431\u0430\u0458\u04b9\u0430\u043d\u04b9\u0430"]={name:"Azerbaijani Cyrillic",keys:[[["`","~"],["1","!"],["2",'"'],["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0458","\u0408"],["\u04af","\u04ae"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],
72
+ ["\u04bb","\u04ba"],["\u0437","\u0417"],["\u0445","\u0425"],["\u04b9","\u04b8"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u049d","\u049c"],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["\u04d9","\u04d8"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u0493",
73
+ "\u0492"],["\u0431","\u0411"],["\u04e9","\u04e8"],[".",","],["Shift","Shift"]],[[" "," "]]],lang:["az-Cyrl"]};this.VKI_layout["Az\u0259rbaycanca"]={name:"Azerbaijani Latin",keys:[[["`","~"],["1","!"],["2",'"'],["3","\u2166"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["\u00fc","\u00dc"],["e","E"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","\u0130"],["o","O"],["p","P"],["\u00f6","\u00d6"],["\u011f","\u011e"],
74
+ ["\\","/"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u0131","I"],["\u0259","\u018f"],["Enter","Enter"]],[["Shift","Shift"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],["\u00e7","\u00c7"],["\u015f","\u015e"],[".",","],["Shift","Shift"]],[[" "," "]]],lang:["az"]};this.VKI_layout["\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"]={name:"Belarusian",keys:[[["\u0451","\u0401"],["1","!"],["2",'"'],
75
+ ["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u045e","\u040e"],["\u0437","\u0417"],["\u0445","\u0425"],["'","'"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440",
76
+ "\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u044d","\u042d"],["Enter","Enter"]],[["Shift","Shift"],["/","|"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0456","\u0406"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],[".",","],["Shift","Shift"]],[[" "," "]]],lang:["be"]};this.VKI_layout["Belgische / Belge"]={name:"Belgian",keys:[[["\u00b2","\u00b3"],["&","1","|"],["\u00e9","2",
77
+ "@"],['"',"3","#"],["'","4"],["(","5"],["\u00a7","6","^"],["\u00e8","7"],["!","8"],["\u00e7","9","{"],["\u00e0","0","}"],[")","\u00b0"],["-","_"],["Bksp","Bksp"]],[["Tab","Tab"],["a","A"],["z","Z"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["^","\u00a8","["],["$","*","]"],["\u03bc","\u00a3","`"]],[["Caps","Caps"],["q","Q"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["m","M"],["\u00f9","%","\u00b4"],["Enter","Enter"]],
78
+ [["Shift","Shift"],["<",">","\\"],["w","W"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],[",","?"],[";","."],[":","/"],["=","+","~"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["nl-BE","fr-BE"]};this.VKI_layout["\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0424\u043e\u043d\u0435\u0442\u0438\u0447\u0435\u043d"]={name:"Bulgarian Phonetic",keys:[[["\u0447","\u0427"],["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],
79
+ ["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u044f","\u042f"],["\u0432","\u0412"],["\u0435","\u0415"],["\u0440","\u0420"],["\u0442","\u0422"],["\u044a","\u042a"],["\u0443","\u0423"],["\u0438","\u0418"],["\u043e","\u041e"],["\u043f","\u041f"],["\u0448","\u0428"],["\u0449","\u0429"],["\u044e","\u042e"]],[["Caps","Caps"],["\u0430","\u0410"],["\u0441","\u0421"],["\u0434","\u0414"],["\u0444","\u0424"],["\u0433","\u0413"],["\u0445","\u0425"],["\u0439","\u0419"],["\u043a","\u041a"],["\u043b","\u041b"],
80
+ [";",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u0437","\u0417"],["\u044c","\u042c"],["\u0446","\u0426"],["\u0436","\u0416"],["\u0431","\u0411"],["\u043d","\u041d"],["\u043c","\u041c"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "]]],lang:["bg"]};this.VKI_layout["\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"]={name:"Bulgarian BDS",keys:[[["`","~"],["1","!"],["2","?"],["3","+"],["4",'"'],["5","%"],["6","="],["7",":"],["8","/"],["9","_"],["0","\u2116"],["-","\u0406"],
81
+ ["=","V"],["Bksp","Bksp"]],[["Tab","Tab"],[",","\u044b"],["\u0443","\u0423"],["\u0435","\u0415"],["\u0438","\u0418"],["\u0448","\u0428"],["\u0449","\u0429"],["\u043a","\u041a"],["\u0441","\u0421"],["\u0434","\u0414"],["\u0437","\u0417"],["\u0446","\u0426"],[";","\u00a7"],["(",")"]],[["Caps","Caps"],["\u044c","\u042c"],["\u044f","\u042f"],["\u0430","\u0410"],["\u043e","\u041e"],["\u0436","\u0416"],["\u0433","\u0413"],["\u0442","\u0422"],["\u043d","\u041d"],["\u0412","\u0412"],["\u043c","\u041c"],["\u0447",
82
+ "\u0427"],["Enter","Enter"]],[["Shift","Shift"],["\u042e","\u044e"],["\u0439","\u0419"],["\u044a","\u042a"],["\u044d","\u042d"],["\u0444","\u0424"],["\u0445","\u0425"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043b","\u041b"],["\u0431","\u0411"],["Shift","Shift"]],[[" "," "]]]};this.VKI_layout["\u09ac\u09be\u0982\u09b2\u09be"]={name:"Bengali",keys:[[[""],["1","","\u09e7"],["2","","\u09e8"],["3","\u09cd\u09b0","\u09e9"],["4","\u09b0\u09cd","\u09ea"],["5","\u099c\u09cd\u09b0","\u09eb"],["6","\u09a4\u09cd\u09b7",
83
+ "\u09ec"],["7","\u0995\u09cd\u09b0","\u09ed"],["8","\u09b6\u09cd\u09b0","\u09ee"],["9","(","\u09ef"],["0",")","\u09e6"],["-","\u0983"],["\u09c3","\u098b","\u09e2","\u09e0"],["Bksp","Bksp"]],[["Tab","Tab"],["\u09cc","\u0994","\u09d7"],["\u09c8","\u0990"],["\u09be","\u0986"],["\u09c0","\u0988","\u09e3","\u09e1"],["\u09c2","\u098a"],["\u09ac","\u09ad"],["\u09b9","\u0999"],["\u0997","\u0998"],["\u09a6","\u09a7"],["\u099c","\u099d"],["\u09a1","\u09a2","\u09dc","\u09dd"],["Enter","Enter"]],[["Caps","Caps"],
84
+ ["\u09cb","\u0993","\u09f4","\u09f5"],["\u09c7","\u098f","\u09f6","\u09f7"],["\u09cd","\u0985","\u09f8","\u09f9"],["\u09bf","\u0987","\u09e2","\u098c"],["\u09c1","\u0989"],["\u09aa","\u09ab"],["\u09b0","","\u09f0","\u09f1"],["\u0995","\u0996"],["\u09a4","\u09a5"],["\u099a","\u099b"],["\u099f","\u09a0"],["\u09bc","\u099e"]],[["Shift","Shift"],[""],["\u0982","\u0981","\u09fa"],["\u09ae","\u09a3"],["\u09a8"],["\u09ac"],["\u09b2"],["\u09b8","\u09b6"],[",","\u09b7"],[".","{"],["\u09af","\u09df"],["Shift",
85
+ "Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["bn"]};this.VKI_layout.Bosanski={name:"Bosnian",keys:[[["\u00b8","\u00a8"],["1","!","~"],["2",'"',"\u02c7"],["3","#","^"],["4","$","\u02d8"],["5","%","\u00b0"],["6","&","\u02db"],["7","/","`"],["8","(","\u02d9"],["9",")","\u00b4"],["0","=","\u02dd"],["'","?","\u00a8"],["+","*","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\\"],["w","W","|"],["e","E","\u20ac"],["r","R"],["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P"],["\u0161",
86
+ "\u0160","\u00f7"],["\u0111","\u0110","\u00d7"],["\u017e","\u017d","\u00a4"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F","["],["g","G","]"],["h","H"],["j","J"],["k","K","\u0142"],["l","L","\u0141"],["\u010d","\u010c"],["\u0107","\u0106","\u00df"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["y","Y"],["x","X"],["c","C"],["v","V","@"],["b","B","{"],["n","N","}"],["m","M","\u00a7"],[",",";","<"],[".",":",">"],["-","_","\u00a9"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],
87
+ lang:["bs"]};this.VKI_layout["Canadienne-fran\u00e7aise"]={name:"Canadian French",keys:[[["#","|","\\"],["1","!","\u00b1"],["2",'"',"@"],["3","/","\u00a3"],["4","$","\u00a2"],["5","%","\u00a4"],["6","?","\u00ac"],["7","&","\u00a6"],["8","*","\u00b2"],["9","(","\u00b3"],["0",")","\u00bc"],["-","_","\u00bd"],["=","+","\u00be"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O","\u00a7"],["p","P","\u00b6"],["^","^","["],["\u00b8",
88
+ "\u00a8","]"],["<",">","}"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],[";",":","~"],["`","`","{"],["Enter","Enter"]],[["Shift","Shift"],["\u00ab","\u00bb","\u00b0"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u00b5"],[",","'","\u00af"],[".",".","\u00ad"],["\u00e9","\u00c9","\u00b4"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["fr-CA"]};this.VKI_layout["\u010cesky"]={name:"Czech",keys:[[[";",
89
+ "\u00b0","`","~"],["+","1","!"],["\u011b","2","@"],["\u0161","3","#"],["\u010d","4","$"],["\u0159","5","%"],["\u017e","6","^"],["\u00fd","7","&"],["\u00e1","8","*"],["\u00ed","9","("],["\u00e9","0",")"],["=","%","-","_"],["\u00b4","\u02c7","=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00fa","/","[","{"],[")","(","]","}"],["\u00a8","'","\\","|"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],
90
+ ["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u016f",'"',";",":"],["\u00a7","!","\u00a4","^"],["Enter","Enter"]],[["Shift","Shift"],["\\","|","","\u02dd"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","?","<","\u00d7"],[".",":",">","\u00f7"],["-","_","/","?"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["cs"]};this.VKI_layout.Dansk={name:"Danish",keys:[[["\u00bd","\u00a7"],["1","!"],["2",'"',"@"],["3","#","\u00a3"],["4","\u00a4","$"],["5",
91
+ "%","\u20ac"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["+","?"],["\u00b4","`","|"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e5","\u00c5"],["\u00a8","^","~"],["'","*"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e6","\u00c6"],["\u00f8","\u00d8"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\\"],["z",
92
+ "Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u03bc","\u039c"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["da"]};this.VKI_layout.Deutsch={name:"German",keys:[[["^","\u00b0"],["1","!"],["2",'"',"\u00b2"],["3","\u00a7","\u00b3"],["4","$"],["5","%"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["\u00df","?","\\"],["\u00b4","`"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","@"],["w","W"],["e","E","\u20ac"],["r","R"],
93
+ ["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00fc","\u00dc"],["+","*","~"],["#","'"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f6","\u00d6"],["\u00e4","\u00c4"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\u00a6"],["y","Y"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u00b5"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["de"]};this.VKI_layout.Dingbats=
94
+ {name:"Dingbats",keys:[[["\u2764","\u2765","\u2766","\u2767"],["\u278a","\u2780","\u2776","\u2768"],["\u278b","\u2781","\u2777","\u2769"],["\u278c","\u2782","\u2778","\u276a"],["\u278d","\u2783","\u2779","\u276b"],["\u278e","\u2784","\u277a","\u276c"],["\u278f","\u2785","\u277b","\u276d"],["\u2790","\u2786","\u277c","\u276e"],["\u2791","\u2787","\u277d","\u276f"],["\u2792","\u2788","\u277e","\u2770"],["\u2793","\u2789","\u277f","\u2771"],["\u2795","\u2796","\u274c","\u2797"],["\u2702","\u2704","\u2701",
95
+ "\u2703"],["Bksp","Bksp"]],[["Tab","Tab"],["\u2714","\u2705","\u2713"],["\u2718","\u2715","\u2717","\u2716"],["\u271a","\u2719","\u271b","\u271c"],["\u271d","\u271e","\u271f","\u2720"],["\u2722","\u2723","\u2724","\u2725"],["\u2726","\u2727","\u2728","\u2756"],["\u2729","\u272a","\u272d","\u2730"],["\u272c","\u272b","\u272e","\u272f"],["\u2736","\u2731","\u2732","\u2749"],["\u273b","\u273c","\u273d","\u273e"],["\u2744","\u2745","\u2746","\u2743"],["\u2733","\u2734","\u2735","\u2721"],["\u2737","\u2738",
96
+ "\u2739","\u273a"]],[["Caps","Caps"],["\u2799","\u279a","\u2798","\u2758"],["\u27b5","\u27b6","\u27b4","\u2759"],["\u27b8","\u27b9","\u27b7","\u275a"],["\u2794","\u279c","\u27ba","\u27bb"],["\u279d","\u279e","\u27a1","\u2772"],["\u27a9","\u27aa","\u27ab","\u27ac"],["\u27a4","\u27a3","\u27a2","\u279b"],["\u27b3","\u27bc","\u27bd","\u2773"],["\u27ad","\u27ae","\u27af","\u27b1"],["\u27a8","\u27a6","\u27a5","\u27a7"],["\u279f","\u27a0","\u27be","\u27b2"],["Enter","Enter"]],[["Shift","Shift"],["\u270c",
97
+ "\u270b","\u270a","\u270d"],["\u274f","\u2750","\u2751","\u2752"],["\u273f","\u2740","\u2741","\u2742"],["\u2747","\u2748","\u274a","\u274b"],["\u2757","\u2755","\u2762","\u2763"],["\u2753","\u2754","\u27b0","\u27bf"],["\u270f","\u2710","\u270e","\u2774"],["\u2712","\u2711","\u274d","\u274e"],["\u2709","\u2706","\u2708","\u2707"],["\u275b","\u275d","\u2761","\u2775"],["\u275c","\u275e","\u275f","\u2760"],["Shift","Shift"]],[["AltLk","AltLk"],[" "," "," "," "],["AltGr","AltGr"]]]};this.VKI_layout["\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0"]=
98
+ {name:"Divehi",keys:[[["`","~"],["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9",")"],["0","("],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u07ab","\u00d7"],["\u07ae","\u2019"],["\u07a7","\u201c"],["\u07a9","/"],["\u07ad",":"],["\u078e","\u07a4"],["\u0783","\u079c"],["\u0789","\u07a3"],["\u078c","\u07a0"],["\u0780","\u0799"],["\u078d","\u00f7"],["[","{"],["]","}"]],[["Caps","Caps"],["\u07a8","<"],["\u07aa",">"],["\u07b0",".",",",","],["\u07a6","\u060c"],
99
+ ["\u07ac",'"'],["\u0788","\u07a5"],["\u0787","\u07a2"],["\u0782","\u0798"],["\u0786","\u079a"],["\u078a","\u07a1"],["\ufdf2","\u061b",";",";"],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["\u0792","\u0796"],["\u0791","\u0795"],["\u0790","\u078f"],["\u0794","\u0797","\u200d"],["\u0785","\u079f","\u200c"],["\u078b","\u079b","\u200e"],["\u0784","\u079d","\u200f"],["\u0781","\\"],["\u0793","\u079e"],["\u07af","\u061f"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["dv"]};this.VKI_layout.Dvorak=
100
+ {name:"Dvorak",keys:[[["`","~"],["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],["[","{"],["]","}"],["Bksp","Bksp"]],[["Tab","Tab"],["'",'"'],[",","<"],[".",">"],["p","P"],["y","Y"],["f","F"],["g","G"],["c","C"],["r","R"],["l","L"],["/","?"],["=","+"],["\\","|"]],[["Caps","Caps"],["a","A"],["o","O"],["e","E"],["u","U"],["i","I"],["d","D"],["h","H"],["t","T"],["n","N"],["s","S"],["-","_"],["Enter","Enter"]],[["Shift","Shift"],[";",":"],["q","Q"],
101
+ ["j","J"],["k","K"],["x","X"],["b","B"],["m","M"],["w","W"],["v","V"],["z","Z"],["Shift","Shift"]],[[" "," "]]]};this.VKI_layout["\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"]={name:"Greek",keys:[[["`","~"],["1","!"],["2","@","\u00b2"],["3","#","\u00b3"],["4","$","\u00a3"],["5","%","\u00a7"],["6","^","\u00b6"],["7","&"],["8","*","\u00a4"],["9","(","\u00a6"],["0",")","\u00ba"],["-","_","\u00b1"],["=","+","\u00bd"],["Bksp","Bksp"]],[["Tab","Tab"],[";",":"],["\u03c2","^"],["\u03b5","\u0395"],["\u03c1",
102
+ "\u03a1"],["\u03c4","\u03a4"],["\u03c5","\u03a5"],["\u03b8","\u0398"],["\u03b9","\u0399"],["\u03bf","\u039f"],["\u03c0","\u03a0"],["[","{","\u201c"],["]","}","\u201d"],["\\","|","\u00ac"]],[["Caps","Caps"],["\u03b1","\u0391"],["\u03c3","\u03a3"],["\u03b4","\u0394"],["\u03c6","\u03a6"],["\u03b3","\u0393"],["\u03b7","\u0397"],["\u03be","\u039e"],["\u03ba","\u039a"],["\u03bb","\u039b"],["\u0384","\u00a8","\u0385"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["\u03b6","\u0396"],["\u03c7",
103
+ "\u03a7"],["\u03c8","\u03a8"],["\u03c9","\u03a9"],["\u03b2","\u0392"],["\u03bd","\u039d"],["\u03bc","\u039c"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["el"]};this.VKI_layout.Eesti={name:"Estonian",keys:[[["\u02c7","~"],["1","!"],["2",'"',"@","@"],["3","#","\u00a3","\u00a3"],["4","\u00a4","$","$"],["5","%","\u20ac"],["6","&"],["7","/","{","{"],["8","(","[","["],["9",")","]","]"],["0","=","}","}"],["+","?","\\","\\"],["\u00b4","`"],["Bksp","Bksp"]],
104
+ [["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00fc","\u00dc"],["\u00f5","\u00d5","\u00a7","\u00a7"],["'","*","\u00bd","\u00bd"]],[["Caps","Caps"],["a","A"],["s","S","\u0161","\u0160"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f6","\u00d6"],["\u00e4","\u00c4","^","^"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|","|"],["z","Z","\u017e","\u017d"],["x","X"],["c","C"],["v","V"],["b",
105
+ "B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["et"]};this.VKI_layout["Espa\u00f1ol"]={name:"Spanish",keys:[[["\u00ba","\u00aa","\\"],["1","!","|"],["2",'"',"@"],["3","'","#"],["4","$","~"],["5","%","\u20ac"],["6","&","\u00ac"],["7","/"],["8","("],["9",")"],["0","="],["'","?"],["\u00a1","\u00bf"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],
106
+ ["`","^","["],["+","*","]"],["\u00e7","\u00c7","}"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f1","\u00d1"],["\u00b4","\u00a8","{"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["es"]};this.VKI_layout["\u062f\u0631\u06cc"]={name:"Dari",keys:[[["\u200d","\u00f7","~"],
107
+ ["\u06f1","!","`"],["\u06f2","\u066c","@"],["\u06f3","\u066b","#"],["\u06f4","\u060b","$"],["\u06f5","\u066a","%"],["\u06f6","\u00d7","^"],["\u06f7","\u060c","&"],["\u06f8","*","\u2022"],["\u06f9",")","\u200e"],["\u06f0","(","\u200f"],["-","\u0640","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0636","\u0652","\u00b0"],["\u0635","\u064c"],["\u062b","\u064d","\u20ac"],["\u0642","\u064b","\ufd3e"],["\u0641","\u064f","\ufd3f"],["\u063a","\u0650","\u0656"],["\u0639","\u064e","\u0659"],["\u0647","\u0651",
108
+ "\u0655"],["\u062e","]","'"],["\u062d","[",'"'],["\u062c","}","\u0681"],["\u0686","{","\u0685"],["\\","|","?"]],[["Caps","Caps"],["\u0634","\u0624","\u069a"],["\u0633","\u0626","\u06cd"],["\u06cc","\u064a","\u0649"],["\u0628","\u0625","\u06d0"],["\u0644","\u0623","\u06b7"],["\u0627","\u0622","\u0671"],["\u062a","\u0629","\u067c"],["\u0646","\u00bb","\u06bc"],["\u0645","\u00ab","\u06ba"],["\u06a9",":",";"],["\u06af","\u061b","\u06ab"],["Enter","Enter"]],[["Shift","Shift"],["\u0638","\u0643","\u06d2"],
109
+ ["\u0637","\u0653","\u0691"],["\u0632","\u0698","\u0696"],["\u0631","\u0670","\u0693"],["\u0630","\u200c","\u0688"],["\u062f","\u0654","\u0689"],["\u067e","\u0621","\u0679"],["\u0648",">",","],[".","<","\u06c7"],["/","\u061f","\u06c9"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["fa-AF"]};this.VKI_layout["\u0641\u0627\u0631\u0633\u06cc"]={name:"Farsi",keys:[[["\u067e","\u0651 "],["1","!","\u00a1","\u00b9"],["2","@","\u00b2"],["3","#","\u00b3"],["4","$","\u00a4","\u00a3"],["5",
110
+ "%","\u20ac"],["6","^","\u00bc"],["7","&","\u00bd"],["8","*","\u00be"],["9","(","\u2018"],["0",")","\u2019"],["-","_","\u00a5"],["=","+","\u00d7","\u00f7"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0636","\u064e"],["\u0635","\u064b"],["\u062b","\u064f"],["\u0642","\u064c"],["\u0641","\u0644"],["\u063a","\u0625"],["\u0639","\u2018"],["\u0647","\u00f7"],["\u062e","\u00d7"],["\u062d","\u061b"],["\u062c","<"],["\u0686",">"],["\u0698","|"]],[["Caps","Caps"],["\u0634","\u0650"],["\u0633","\u064d"],["\u064a",
111
+ "]"],["\u0628","["],["\u0644","\u0644"],["\u0627","\u0623"],["\u062a","\u0640"],["\u0646","\u060c"],["\u0645","\\"],["\u06af",":"],["\u0643",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u0626","~"],["\u0621","\u0652"],["\u0632","}"],["\u0631","{"],["\u0630","\u0644"],["\u062f","\u0622"],["\u0626","\u0621"],["\u0648",","],[".","."],["/","\u061f"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["fa"]};this.VKI_layout["F\u00f8royskt"]={name:"Faeroese",keys:[[["\u00bd","\u00a7"],["1","!"],
112
+ ["2",'"',"@"],["3","#","\u00a3"],["4","\u00a4","$"],["5","%","\u20ac"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["+","?"],["\u00b4","`","|"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e5","\u00c5","\u00a8"],["\u00f0","\u00d0","~"],["'","*"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e6","\u00c6"],["\u00f8",
113
+ "\u00d8","^"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\\"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u00b5"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["fo"]};this.VKI_layout["Fran\u00e7ais"]={name:"French",keys:[[["\u00b2","\u00b3"],["&","1"],["\u00e9","2","~"],['"',"3","#"],["'","4","{"],["(","5","["],["-","6","|"],["\u00e8","7","`"],["_","8","\\"],["\u00e7","9","^"],["\u00e0","0","@"],[")","\u00b0","]"],["=",
114
+ "+","}"],["Bksp","Bksp"]],[["Tab","Tab"],["a","A"],["z","Z"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["^","\u00a8"],["$","\u00a3","\u00a4"],["*","\u03bc"]],[["Caps","Caps"],["q","Q"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["m","M"],["\u00f9","%"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["w","W"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],[",","?"],[";","."],[":","/"],["!","\u00a7"],["Shift","Shift"]],
115
+ [[" "," "," "," "],["AltGr","AltGr"]]],lang:["fr"]};this.VKI_layout.Gaeilge={name:"Irish / Gaelic",keys:[[["`","\u00ac","\u00a6","\u00a6"],["1","!"],["2",'"'],["3","\u00a3"],["4","$","\u20ac"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u00e9","\u00c9"],["r","R"],["t","T"],["y","Y","\u00fd","\u00dd"],["u","U","\u00fa","\u00da"],["i","I","\u00ed","\u00cd"],["o","O","\u00f3","\u00d3"],["p","P"],["[","{"],
116
+ ["]","}"],["#","~"]],[["Caps","Caps"],["a","A","\u00e1","\u00c1"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],[";",":"],["'","@","\u00b4","`"],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ga","gd"]};this.VKI_layout["\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"]={name:"Gujarati",keys:[[[""],["1","\u0a8d",
117
+ "\u0ae7"],["2","\u0ac5","\u0ae8"],["3","\u0acd\u0ab0","\u0ae9"],["4","\u0ab0\u0acd","\u0aea"],["5","\u0a9c\u0acd\u0a9e","\u0aeb"],["6","\u0aa4\u0acd\u0ab0","\u0aec"],["7","\u0a95\u0acd\u0ab7","\u0aed"],["8","\u0ab6\u0acd\u0ab0","\u0aee"],["9","(","\u0aef"],["0",")","\u0ae6"],["-","\u0a83"],["\u0ac3","\u0a8b","\u0ac4","\u0ae0"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0acc","\u0a94"],["\u0ac8","\u0a90"],["\u0abe","\u0a86"],["\u0ac0","\u0a88"],["\u0ac2","\u0a8a"],["\u0aac","\u0aad"],["\u0ab9","\u0a99"],
118
+ ["\u0a97","\u0a98"],["\u0aa6","\u0aa7"],["\u0a9c","\u0a9d"],["\u0aa1","\u0aa2"],["\u0abc","\u0a9e"],["\u0ac9","\u0a91"]],[["Caps","Caps"],["\u0acb","\u0a93"],["\u0ac7","\u0a8f"],["\u0acd","\u0a85"],["\u0abf","\u0a87"],["\u0ac1","\u0a89"],["\u0aaa","\u0aab"],["\u0ab0"],["\u0a95","\u0a96"],["\u0aa4","\u0aa5"],["\u0a9a","\u0a9b"],["\u0a9f","\u0aa0"],["Enter","Enter"]],[["Shift","Shift"],[""],["\u0a82","\u0a81","","\u0ad0"],["\u0aae","\u0aa3"],["\u0aa8"],["\u0ab5"],["\u0ab2","\u0ab3"],["\u0ab8","\u0ab6"],
119
+ [",","\u0ab7"],[".","\u0964","\u0965","\u0abd"],["\u0aaf"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["gu"]};this.VKI_layout["\u05e2\u05d1\u05e8\u05d9\u05ea"]={name:"Hebrew",keys:[[["~","`"],["1","!"],["2","@"],["3","#"],["4","$","\u20aa"],["5","%"],["6","^"],["7","&"],["8","*"],["9",")"],["0","("],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["/","Q"],["'","W"],["\u05e7","E","\u20ac"],["\u05e8","R"],["\u05d0","T"],["\u05d8","Y"],["\u05d5","U","\u05f0"],["\u05df","I"],
120
+ ["\u05dd","O"],["\u05e4","P"],["\\","|"],["Enter","Enter"]],[["Caps","Caps"],["\u05e9","A"],["\u05d3","S"],["\u05d2","D"],["\u05db","F"],["\u05e2","G"],["\u05d9","H","\u05f2"],["\u05d7","J","\u05f1"],["\u05dc","K"],["\u05da","L"],["\u05e3",":"],[",",'"'],["]","}"],["[","{"]],[["Shift","Shift"],["\u05d6","Z"],["\u05e1","X"],["\u05d1","C"],["\u05d4","V"],["\u05e0","B"],["\u05de","N"],["\u05e6","M"],["\u05ea",">"],["\u05e5","<"],[".","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["he"]};
121
+ this.VKI_layout["\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940"]={name:"Devanagari",keys:[[["\u094a","\u0912"],["1","\u090d","\u0967"],["2","\u0945","\u0968"],["3","\u094d\u0930","\u0969"],["4","\u0930\u094d","\u096a"],["5","\u091c\u094d\u091e","\u096b"],["6","\u0924\u094d\u0930","\u096c"],["7","\u0915\u094d\u0937","\u096d"],["8","\u0936\u094d\u0930","\u096e"],["9","(","\u096f"],["0",")","\u0966"],["-","\u0903"],["\u0943","\u090b","\u0944","\u0960"],["Bksp","Bksp"]],[["Tab","Tab"],["\u094c","\u0914"],
122
+ ["\u0948","\u0910"],["\u093e","\u0906"],["\u0940","\u0908","\u0963","\u0961"],["\u0942","\u090a"],["\u092c","\u092d"],["\u0939","\u0919"],["\u0917","\u0918","\u095a"],["\u0926","\u0927"],["\u091c","\u091d","\u095b"],["\u0921","\u0922","\u095c","\u095d"],["\u093c","\u091e"],["\u0949","\u0911"]],[["Caps","Caps"],["\u094b","\u0913"],["\u0947","\u090f"],["\u094d","\u0905"],["\u093f","\u0907","\u0962","\u090c"],["\u0941","\u0909"],["\u092a","\u092b","","\u095e"],["\u0930","\u0931"],["\u0915","\u0916",
123
+ "\u0958","\u0959"],["\u0924","\u0925"],["\u091a","\u091b","\u0952"],["\u091f","\u0920","","\u0951"],["Enter","Enter"]],[["Shift","Shift"],["\u0946","\u090e","\u0953"],["\u0902","\u0901","","\u0950"],["\u092e","\u0923","\u0954"],["\u0928","\u0929"],["\u0935","\u0934"],["\u0932","\u0933"],["\u0938","\u0936"],[",","\u0937","\u0970"],[".","\u0964","\u0965","\u093d"],["\u092f","\u095f"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["hi-Deva"]};this.VKI_layout["\u0939\u093f\u0902\u0926\u0940"]=
124
+ {name:"Hindi",keys:[[["\u200d","\u200c","`","~"],["1","\u090d","\u0967","!"],["2","\u0945","\u0968","@"],["3","\u094d\u0930","\u0969","#"],["4","\u0930\u094d","\u096a","$"],["5","\u091c\u094d\u091e","\u096b","%"],["6","\u0924\u094d\u0930","\u096c","^"],["7","\u0915\u094d\u0937","\u096d","&"],["8","\u0936\u094d\u0930","\u096e","*"],["9","(","\u096f","("],["0",")","\u0966",")"],["-","\u0903","-","_"],["\u0943","\u090b","=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u094c","\u0914"],["\u0948","\u0910"],
125
+ ["\u093e","\u0906"],["\u0940","\u0908"],["\u0942","\u090a"],["\u092c","\u092d"],["\u0939","\u0919"],["\u0917","\u0918"],["\u0926","\u0927"],["\u091c","\u091d"],["\u0921","\u0922","[","{"],["\u093c","\u091e","]","}"],["\u0949","\u0911","\\","|"]],[["Caps","Caps"],["\u094b","\u0913"],["\u0947","\u090f"],["\u094d","\u0905"],["\u093f","\u0907"],["\u0941","\u0909"],["\u092a","\u092b"],["\u0930","\u0931"],["\u0915","\u0916"],["\u0924","\u0925"],["\u091a","\u091b",";",":"],["\u091f","\u0920","'",'"'],["Enter",
126
+ "Enter"]],[["Shift","Shift"],[""],["\u0902","\u0901","","\u0950"],["\u092e","\u0923"],["\u0928"],["\u0935"],["\u0932","\u0933"],["\u0938","\u0936"],[",","\u0937",",","<"],[".","\u0964",".",">"],["\u092f","\u095f","/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["hi"]};this.VKI_layout.Hrvatski={name:"Croatian",keys:this.VKI_layout.Bosanski.keys.slice(0),lang:["hr"]};this.VKI_layout["\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0574\u0578\u0582\u057f\u0584"]=
127
+ {name:"Western Armenian",keys:[[["\u055d","\u055c"],[":","1"],["\u0571","\u0541"],["\u0575","\u0545"],["\u055b","3"],[",","4"],["-","9"],[".","\u0587"],["\u00ab","("],["\u00bb",")"],["\u0585","\u0555"],["\u057c","\u054c"],["\u056a","\u053a"],["Bksp","Bksp"]],[["Tab","Tab"],["\u056d","\u053d"],["\u057e","\u054e"],["\u0567","\u0537"],["\u0580","\u0550"],["\u0564","\u0534"],["\u0565","\u0535"],["\u0568","\u0538"],["\u056b","\u053b"],["\u0578","\u0548"],["\u0562","\u0532"],["\u0579","\u0549"],["\u057b",
128
+ "\u054b"],["'","\u055e"]],[["Caps","Caps"],["\u0561","\u0531"],["\u057d","\u054d"],["\u057f","\u054f"],["\u0586","\u0556"],["\u056f","\u053f"],["\u0570","\u0540"],["\u0573","\u0543"],["\u0584","\u0554"],["\u056c","\u053c"],["\u0569","\u0539"],["\u0583","\u0553"],["Enter","Enter"]],[["Shift","Shift"],["\u0566","\u0536"],["\u0581","\u0551"],["\u0563","\u0533"],["\u0582","\u0552"],["\u057a","\u054a"],["\u0576","\u0546"],["\u0574","\u0544"],["\u0577","\u0547"],["\u0572","\u0542"],["\u056e","\u053e"],
129
+ ["Shift","Shift"]],[[" "," "]]],lang:["hy-arevmda"]};this.VKI_layout["\u0540\u0561\u0575\u0565\u0580\u0565\u0576 \u0561\u0580\u0565\u0582\u0565\u056c\u0584"]={name:"Eastern Armenian",keys:[[["\u055d","\u055c"],[":","1"],["\u0571","\u0541"],["\u0575","\u0545"],["\u055b","3"],[",","4"],["-","9"],[".","\u0587"],["\u00ab","("],["\u00bb",")"],["\u0585","\u0555"],["\u057c","\u054c"],["\u056a","\u053a"],["Bksp","Bksp"]],[["Tab","Tab"],["\u056d","\u053d"],["\u0582","\u0552"],["\u0567","\u0537"],["\u0580",
130
+ "\u0550"],["\u057f","\u054f"],["\u0565","\u0535"],["\u0568","\u0538"],["\u056b","\u053b"],["\u0578","\u0548"],["\u057a","\u054a"],["\u0579","\u0549"],["\u057b","\u054b"],["'","\u055e"]],[["Caps","Caps"],["\u0561","\u0531"],["\u057d","\u054d"],["\u0564","\u0534"],["\u0586","\u0556"],["\u0584","\u0554"],["\u0570","\u0540"],["\u0573","\u0543"],["\u056f","\u053f"],["\u056c","\u053c"],["\u0569","\u0539"],["\u0583","\u0553"],["Enter","Enter"]],[["Shift","Shift"],["\u0566","\u0536"],["\u0581","\u0551"],
131
+ ["\u0563","\u0533"],["\u057e","\u054e"],["\u0562","\u0532"],["\u0576","\u0546"],["\u0574","\u0544"],["\u0577","\u0547"],["\u0572","\u0542"],["\u056e","\u053e"],["Shift","Shift"]],[[" "," "]]],lang:["hy"]};this.VKI_layout["\u00cdslenska"]={name:"Icelandic",keys:[[["\u00b0","\u00a8","\u00b0"],["1","!"],["2",'"'],["3","#"],["4","$"],["5","%","\u20ac"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["\u00f6","\u00d6","\\"],["-","_"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","@"],["w",
132
+ "W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00f0","\u00d0"],["'","?","~"],["+","*","`"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e6","\u00c6"],["\u00b4","'","^"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u00b5"],[",",";"],[".",":"],["\u00fe","\u00de"],["Shift","Shift"]],[[" "," "," "," "],["AltGr",
133
+ "AltGr"]]],lang:["is"]};this.VKI_layout.Italiano={name:"Italian",keys:[[["\\","|"],["1","!"],["2",'"'],["3","\u00a3"],["4","$","\u20ac"],["5","%"],["6","&"],["7","/"],["8","("],["9",")"],["0","="],["'","?"],["\u00ec","^"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e8","\u00e9","[","{"],["+","*","]","}"],["\u00f9","\u00a7"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h",
134
+ "H"],["j","J"],["k","K"],["l","L"],["\u00f2","\u00e7","@"],["\u00e0","\u00b0","#"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["it"]};this.VKI_layout["\u65e5\u672c\u8a9e"]={name:"Japanese Hiragana/Katakana",keys:[[["\uff5e"],["\u306c","\u30cc"],["\u3075","\u30d5"],["\u3042","\u30a2","\u3041","\u30a1"],["\u3046","\u30a6","\u3045","\u30a5"],
135
+ ["\u3048","\u30a8","\u3047","\u30a7"],["\u304a","\u30aa","\u3049","\u30a9"],["\u3084","\u30e4","\u3083","\u30e3"],["\u3086","\u30e6","\u3085","\u30e5"],["\u3088","\u30e8","\u3087","\u30e7"],["\u308f","\u30ef","\u3092","\u30f2"],["\u307b","\u30db","\u30fc","\uff1d"],["\u3078","\u30d8","\uff3e","\uff5e"],["Bksp","Bksp"]],[["Tab","Tab"],["\u305f","\u30bf"],["\u3066","\u30c6"],["\u3044","\u30a4","\u3043","\u30a3"],["\u3059","\u30b9"],["\u304b","\u30ab"],["\u3093","\u30f3"],["\u306a","\u30ca"],["\u306b",
136
+ "\u30cb"],["\u3089","\u30e9"],["\u305b","\u30bb"],["\u3001","\u3001","\uff20","\u2018"],["\u3002","\u3002","\u300c","\uff5b"],["\uffe5","","","\uff0a"],["\u309b",'"',"\uffe5","\uff5c"]],[["Caps","Caps"],["\u3061","\u30c1"],["\u3068","\u30c8"],["\u3057","\u30b7"],["\u306f","\u30cf"],["\u304d","\u30ad"],["\u304f","\u30af"],["\u307e","\u30de"],["\u306e","\u30ce"],["\u308c","\u30ec","\uff1b","\uff0b"],["\u3051","\u30b1","\uff1a","\u30f6"],["\u3080","\u30e0","\u300d","\uff5d"],["Enter","Enter"]],[["Shift",
137
+ "Shift"],["\u3064","\u30c4"],["\u3055","\u30b5"],["\u305d","\u30bd"],["\u3072","\u30d2"],["\u3053","\u30b3"],["\u307f","\u30df"],["\u3082","\u30e2"],["\u306d","\u30cd","\u3001","\uff1c"],["\u308b","\u30eb","\u3002","\uff1e"],["\u3081","\u30e1","\u30fb","\uff1f"],["\u308d","\u30ed","","\uff3f"],["Shift","Shift"]],[["AltLk","AltLk"],[" "," "," "," "],["Alt","Alt"]]],lang:["ja"]};this.VKI_layout["\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"]={name:"Georgian",keys:[[["\u201e","\u201c"],["!","1"],["?",
138
+ "2"],["\u2116","3"],["\u00a7","4"],["%","5"],[":","6"],[".","7"],[";","8"],[",","9"],["/","0"],["\u2013","-"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u10e6","\u10e6"],["\u10ef","\u10ef"],["\u10e3","\u10e3"],["\u10d9","\u10d9"],["\u10d4","\u10d4","\u10f1"],["\u10dc","\u10dc"],["\u10d2","\u10d2"],["\u10e8","\u10e8"],["\u10ec","\u10ec"],["\u10d6","\u10d6"],["\u10ee","\u10ee","\u10f4"],["\u10ea","\u10ea"],["(",")"]],[["Caps","Caps"],["\u10e4","\u10e4","\u10f6"],["\u10eb","\u10eb"],["\u10d5","\u10d5",
139
+ "\u10f3"],["\u10d7","\u10d7"],["\u10d0","\u10d0"],["\u10de","\u10de"],["\u10e0","\u10e0"],["\u10dd","\u10dd"],["\u10da","\u10da"],["\u10d3","\u10d3"],["\u10df","\u10df"],["Enter","Enter"]],[["Shift","Shift"],["\u10ed","\u10ed"],["\u10e9","\u10e9"],["\u10e7","\u10e7"],["\u10e1","\u10e1"],["\u10db","\u10db"],["\u10d8","\u10d8","\u10f2"],["\u10e2","\u10e2"],["\u10e5","\u10e5"],["\u10d1","\u10d1"],["\u10f0","\u10f0","\u10f5"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ka"]};this.VKI_layout["\u049a\u0430\u0437\u0430\u049b\u0448\u0430"]=
140
+ {name:"Kazakh",keys:[[["(",")"],['"',"!"],["\u04d9","\u04d8"],["\u0456","\u0406"],["\u04a3","\u04a2"],["\u0493","\u0492"],[",",";"],[".",":"],["\u04af","\u04ae"],["\u04b1","\u04b0"],["\u049b","\u049a"],["\u04e9","\u04e8"],["\u04bb","\u04ba"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u0449","\u0429"],["\u0437","\u0417"],["\u0445","\u0425"],["\u044a",
141
+ "\u042a"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u044d","\u042d"],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],["\u2116","?"],
142
+ ["Shift","Shift"]],[[" "," "]]],lang:["kk"]};this.VKI_layout["\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a"]={name:"Khmer",keys:[[["\u00ab","\u00bb","\u200d"],["\u17e1","!","\u200c","\u17f1"],["\u17e2","\u17d7","@","\u17f2"],["\u17e3",'"',"\u17d1","\u17f3"],["\u17e4","\u17db","$","\u17f4"],["\u17e5","%","\u20ac","\u17f5"],["\u17e6","\u17cd","\u17d9","\u17f6"],["\u17e7","\u17d0","\u17da","\u17f7"],["\u17e8","\u17cf","*","\u17f8"],["\u17e9","(","{","\u17f9"],["\u17e0",")","}","\u17f0"],["\u17a5",
143
+ "\u17cc","x"],["\u17b2","=","\u17ce"],["Bksp","Bksp"]],[["Tab","Tab"],["\u1786","\u1788","\u17dc","\u19e0"],["\u17b9","\u17ba","\u17dd","\u19e1"],["\u17c1","\u17c2","\u17af","\u19e2"],["\u179a","\u17ac","\u17ab","\u19e3"],["\u178f","\u1791","\u17a8","\u19e4"],["\u1799","\u17bd","\u1799\u17be\u1784","\u19e5"],["\u17bb","\u17bc","","\u19e6"],["\u17b7","\u17b8","\u17a6","\u19e7"],["\u17c4","\u17c5","\u17b1","\u19e8"],["\u1795","\u1797","\u17b0","\u19e9"],["\u17c0","\u17bf","\u17a9","\u19ea"],["\u17aa",
144
+ "\u17a7","\u17b3","\u19eb"],["\u17ae","\u17ad","\\"]],[["Caps","Caps"],["\u17b6","\u17b6\u17c6","\u17b5","\u19ec"],["\u179f","\u17c3","","\u19ed"],["\u178a","\u178c","\u17d3","\u19ee"],["\u1790","\u1792","","\u19ef"],["\u1784","\u17a2","\u17a4","\u19f0"],["\u17a0","\u17c7","\u17a3","\u19f1"],["\u17d2","\u1789","\u17b4","\u19f2"],["\u1780","\u1782","\u179d","\u19f3"],["\u179b","\u17a1","\u17d8","\u19f4"],["\u17be","\u17c4\u17c7","\u17d6","\u19f5"],["\u17cb","\u17c9","\u17c8","\u19f6"],["Enter","Enter"]],
145
+ [["Shift","Shift"],["\u178b","\u178d","|","\u19f7"],["\u1781","\u1783","\u1781\u17d2\u1789\u17bb\u17c6","\u19f8"],["\u1785","\u1787","-","\u19f9"],["\u179c","\u17c1\u17c7","+","\u19fa"],["\u1794","\u1796","\u179e","\u19fb"],["\u1793","\u178e","[","\u19fc"],["\u1798","\u17c6","]","\u19fd"],["\u17bb\u17c6","\u17bb\u17c7",",","\u19fe"],["\u17d4","\u17d5",".","\u19ff"],["\u17ca","?","/"],["Shift","Shift"]],[["\u200b"," ","\u00a0"," "],["AltGr","AltGr"]]],lang:["km"]};this.VKI_layout["\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"]=
146
+ {name:"Kannada",keys:[[["\u0cca","\u0c92"],["1","","\u0ce7"],["2","","\u0ce8"],["3","\u0ccd\u0cb0","\u0ce9"],["4","\u0cb0\u0ccd","\u0cea"],["5","\u0c9c\u0ccd\u0c9e","\u0ceb"],["6","\u0ca4\u0ccd\u0cb0","\u0cec"],["7","\u0c95\u0ccd\u0cb7","\u0ced"],["8","\u0cb6\u0ccd\u0cb0","\u0cee"],["9","(","\u0cef"],["0",")","\u0ce6"],["-","\u0c83"],["\u0cc3","\u0c8b","\u0cc4","\u0ce0"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0ccc","\u0c94"],["\u0cc8","\u0c90","\u0cd6"],["\u0cbe","\u0c86"],["\u0cc0","\u0c88","","\u0ce1"],
147
+ ["\u0cc2","\u0c8a"],["\u0cac","\u0cad"],["\u0cb9","\u0c99"],["\u0c97","\u0c98"],["\u0ca6","\u0ca7"],["\u0c9c","\u0c9d"],["\u0ca1","\u0ca2"],["Enter","Enter"]],[["Caps","Caps"],["\u0ccb","\u0c93"],["\u0cc7","\u0c8f","\u0cd5"],["\u0ccd","\u0c85"],["\u0cbf","\u0c87","","\u0c8c"],["\u0cc1","\u0c89"],["\u0caa","\u0cab","","\u0cde"],["\u0cb0","\u0cb1"],["\u0c95","\u0c96"],["\u0ca4","\u0ca5"],["\u0c9a","\u0c9b"],["\u0c9f","\u0ca0"],["","\u0c9e"]],[["Shift","Shift"],["\u0cc6","\u0c8f"],["\u0c82"],["\u0cae",
148
+ "\u0ca3"],["\u0ca8"],["\u0cb5"],["\u0cb2","\u0cb3"],["\u0cb8","\u0cb6"],[",","\u0cb7"],[".","|"],["\u0caf"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["kn"]};this.VKI_layout["\ud55c\uad6d\uc5b4"]={name:"Korean",keys:[[["`","~","`","~"],["1","!","1","!"],["2","@","2","@"],["3","#","3","#"],["4","$","4","$"],["5","%","5","%"],["6","^","6","^"],["7","&","7","&"],["8","*","8","*"],["9",")","9",")"],["0","(","0","("],["-","_","-","_"],["=","+","=","+"],["\u20a9","|","\u20a9","|"],
149
+ ["Bksp","Bksp"]],[["Tab","Tab"],["\u1107","\u1108","q","Q"],["\u110c","\u110d","w","W"],["\u1103","\u1104","e","E"],["\u1100","\u1101","r","R"],["\u1109","\u110a","t","T"],["\u116d","","y","Y"],["\u1167","","u","U"],["\u1163","","i","I"],["\u1162","\u1164","o","O"],["\u1166","\u1168","p","P"],["[","{","[","{"],["]","}","]","}"]],[["Caps","Caps"],["\u1106","","a","A"],["\u1102","","s","S"],["\u110b","","d","D"],["\u1105","","f","F"],["\u1112","","g","G"],["\u1169","","h","H"],["\u1165","","j","J"],
150
+ ["\u1161","","k","K"],["\u1175","","l","L"],[";",":",";",":"],["'",'"',"'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u110f","","z","Z"],["\u1110","","x","X"],["\u110e","","c","C"],["\u1111","","v","V"],["\u1172","","b","B"],["\u116e","","n","N"],["\u1173","","m","M"],[",","<",",","<"],[".",">",".",">"],["/","?","/","?"],["Shift","Shift"]],[[" "," "," "," "],["Kor","Alt"]]],lang:["ko"]};this.VKI_layout["Kurd\u00ee"]={name:"Kurdish",keys:[[["\u20ac","~"],["\u0661","!"],["\u0662","@"],["\u0663",
151
+ "#"],["\u0664","$"],["\u0665","%"],["\u0666","^"],["\u0667","&"],["\u0668","*"],["\u0669","("],["\u0660",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0642","`"],["\u0648","\u0648\u0648"],["\u06d5","\u064a"],["\u0631","\u0695"],["\u062a","\u0637"],["\u06cc","\u06ce"],["\u0626","\u0621"],["\u062d","\u0639"],["\u06c6","\u0624"],["\u067e","\u062b"],["[","{"],["]","}"],["\\","|"]],[["Caps","Caps"],["\u0627","\u0622"],["\u0633","\u0634"],["\u062f","\u0630"],["\u0641","\u0625"],["\u06af",
152
+ "\u063a"],["\u0647","\u200c"],["\u0698","\u0623"],["\u06a9","\u0643"],["\u0644","\u06b5"],["\u061b",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u0632","\u0636"],["\u062e","\u0635"],["\u062c","\u0686"],["\u06a4","\u0638"],["\u0628","\u0649"],["\u0646","\u0629"],["\u0645","\u0640"],["\u060c","<"],[".",">"],["/","\u061f"],["Shift","Shift"]],[[" "," "]]],lang:["ku"]};this.VKI_layout["\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430"]={name:"Kyrgyz",keys:[[["\u0451","\u0401"],["1","!"],["2",
153
+ '"'],["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423","\u04af","\u04ae"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d","\u04a3","\u04a2"],["\u0433","\u0413"],["\u0448","\u0428"],["\u0449","\u0429"],["\u0437","\u0417"],["\u0445","\u0425"],["\u044a","\u042a"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],
154
+ ["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e","\u04e9","\u04e8"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u044d","\u042d"],["Enter","Enter"]],[["Shift","Shift"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],[".",","],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ky"]};this.VKI_layout["Latvie\u0161u"]=
155
+ {name:"Latvian",keys:[[["\u00ad","?"],["1","!","\u00ab"],["2","\u00ab","","@"],["3","\u00bb","","#"],["4","$","\u20ac","$"],["5","%",'"',"~"],["6","/","\u2019","^"],["7","&","","\u00b1"],["8","\u00d7",":"],["9","("],["0",")"],["-","_","\u2013","\u2014"],["f","F","=",";"],["Bksp","Bksp"]],[["Tab","Tab"],["\u016b","\u016a","q","Q"],["g","G","\u0123","\u0122"],["j","J"],["r","R","\u0157","\u0156"],["m","M","w","W"],["v","V","y","Y"],["n","N"],["z","Z"],["\u0113","\u0112"],["\u010d","\u010c"],["\u017e",
156
+ "\u017d","[","{"],["h","H","]","}"],["\u0137","\u0136"]],[["Caps","Caps"],["\u0161","\u0160"],["u","U"],["s","S"],["i","I"],["l","L"],["d","D"],["a","A"],["t","T"],["e","E","\u20ac"],["c","C"],["\u00b4","\u00b0","\u00b4","\u00a8"],["Enter","Enter"]],[["Shift","Shift"],["\u0146","\u0145"],["b","B","x","X"],["\u012b","\u012a"],["k","K","\u0137","\u0136"],["p","P"],["o","O","\u00f5","\u00d5"],["\u0101","\u0100"],[",",";","<"],[".",":",">"],["\u013c","\u013b"],["Shift","Shift"]],[[" "," "," "," "],["AltGr",
157
+ "AltGr"]]],lang:["lv"]};this.VKI_layout["Lietuvi\u0173"]={name:"Lithuanian",keys:[[["`","~"],["\u0105","\u0104"],["\u010d","\u010c"],["\u0119","\u0118"],["\u0117","\u0116"],["\u012f","\u012e"],["\u0161","\u0160"],["\u0173","\u0172"],["\u016b","\u016a"],["\u201e","("],["\u201c",")"],["-","_"],["\u017e","\u017d"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["[","{"],["]","}"],["\\","|"]],[["Caps","Caps"],["a","A"],
158
+ ["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],[";",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u2013","\u20ac"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "]]],lang:["lt"]};this.VKI_layout.Magyar={name:"Hungarian",keys:[[["0","\u00a7"],["1","'","~"],["2",'"',"\u02c7"],["3","+","\u02c6"],["4","!","\u02d8"],["5","%","\u00b0"],["6","/","\u02db"],["7","=","`"],["8","(","\u02d9"],
159
+ ["9",")","\u00b4"],["\u00f6","\u00d6","\u02dd"],["\u00fc","\u00dc","\u00a8"],["\u00f3","\u00d3","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\\"],["w","W","|"],["e","E","\u00c4"],["r","R"],["t","T"],["z","Z"],["u","U","\u20ac"],["i","I","\u00cd"],["o","O"],["p","P"],["\u0151","\u0150","\u00f7"],["\u00fa","\u00da","\u00d7"],["\u0171","\u0170","\u00a4"]],[["Caps","Caps"],["a","A","\u00e4"],["s","S","\u0111"],["d","D","\u0110"],["f","F","["],["g","G","]"],["h","H"],["j","J","\u00ed"],["k","K",
160
+ "\u0141"],["l","L","\u0142"],["\u00e9","\u00c9","$"],["\u00e1","\u00c1","\u00df"],["Enter","Enter"]],[["Shift","Shift"],["\u00ed","\u00cd","<"],["y","Y",">"],["x","X","#"],["c","C","&"],["v","V","@"],["b","B","{"],["n","N","}"],["m","M","<"],[",","?",";"],[".",":",">"],["-","_","*"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["hu"]};this.VKI_layout.Malti={name:"Maltese 48",keys:[[["\u010b","\u010a","`"],["1","!"],["2",'"'],["3","\u20ac","\u00a3"],["4","$"],["5","%"],["6","^"],
161
+ ["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u00e8","\u00c8"],["r","R"],["t","T"],["y","Y"],["u","U","\u00f9","\u00d9"],["i","I","\u00ec","\u00cc"],["o","O","\u00f2","\u00d2"],["p","P"],["\u0121","\u0120","[","{"],["\u0127","\u0126","]","}"],["#","\u017e"]],[["Caps","Caps"],["a","A","\u00e0","\u00c0"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],[";",":"],["'","@"],["Enter","Enter"]],[["Shift",
162
+ "Shift"],["\u017c","\u017b","\\","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","<"],[".",">"],["/","?","","`"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["mt"]};this.VKI_layout["\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"]={name:"Macedonian Cyrillic",keys:[[["`","~"],["1","!"],["2","\u201e"],["3","\u201c"],["4","\u2019"],["5","%"],["6","\u2018"],["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab",
163
+ "Tab"],["\u0459","\u0409"],["\u045a","\u040a"],["\u0435","\u0415","\u20ac"],["\u0440","\u0420"],["\u0442","\u0422"],["\u0455","\u0405"],["\u0443","\u0423"],["\u0438","\u0418"],["\u043e","\u041e"],["\u043f","\u041f"],["\u0448","\u0428","\u0402"],["\u0453","\u0403","\u0452"],["\u0436","\u0416"]],[["Caps","Caps"],["\u0430","\u0410"],["\u0441","\u0421"],["\u0434","\u0414"],["\u0444","\u0424","["],["\u0433","\u0413","]"],["\u0445","\u0425"],["\u0458","\u0408"],["\u043a","\u041a"],["\u043b","\u041b"],["\u0447",
164
+ "\u0427","\u040b"],["\u045c","\u040c","\u045b"],["Enter","Enter"]],[["Shift","Shift"],["\u0451","\u0401"],["\u0437","\u0417"],["\u045f","\u040f"],["\u0446","\u0426"],["\u0432","\u0412","@"],["\u0431","\u0411","{"],["\u043d","\u041d","}"],["\u043c","\u041c","\u00a7"],[",",";"],[".",":"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["mk"]};this.VKI_layout["\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02"]={name:"Malayalam",keys:[[["\u0d4a","\u0d12"],["1","","\u0d67"],["2","","\u0d68"],
165
+ ["3","\u0d4d\u0d30","\u0d69"],["4","","\u0d6a"],["5","","\u0d6b"],["6","","\u0d6c"],["7","\u0d15\u0d4d\u0d37","\u0d6d"],["8","","\u0d6e"],["9","(","\u0d6f"],["0",")","\u0d66"],["-","\u0d03"],["\u0d43","\u0d0b","","\u0d60"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0d4c","\u0d14","\u0d57"],["\u0d48","\u0d10"],["\u0d3e","\u0d06"],["\u0d40","\u0d08","","\u0d61"],["\u0d42","\u0d0a"],["\u0d2c","\u0d2d"],["\u0d39","\u0d19"],["\u0d17","\u0d18"],["\u0d26","\u0d27"],["\u0d1c","\u0d1d"],["\u0d21","\u0d22"],["","\u0d1e"]],
166
+ [["Caps","Caps"],["\u0d4b","\u0d13"],["\u0d47","\u0d0f"],["\u0d4d","\u0d05","","\u0d0c"],["\u0d3f","\u0d07"],["\u0d41","\u0d09"],["\u0d2a","\u0d2b"],["\u0d30","\u0d31"],["\u0d15","\u0d16"],["\u0d24","\u0d25"],["\u0d1a","\u0d1b"],["\u0d1f","\u0d20"],["Enter","Enter"]],[["Shift","Shift"],["\u0d46","\u0d0f"],["\u0d02"],["\u0d2e","\u0d23"],["\u0d28"],["\u0d35","\u0d34"],["\u0d32","\u0d33"],["\u0d38","\u0d36"],[",","\u0d37"],["."],["\u0d2f"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ml"]};
167
+ this.VKI_layout["Misc. Symbols"]={name:"Misc. Symbols",keys:[[["\u2605","\u2606","\u260e","\u260f"],["\u2648","\u2673","\u2659","\u2630"],["\u2649","\u2674","\u2658","\u2631"],["\u264a","\u2675","\u2657","\u2632"],["\u264b","\u2676","\u2656","\u2633"],["\u264c","\u2677","\u2655","\u2634"],["\u264d","\u2678","\u2654","\u2635"],["\u264e","\u2679","\u265f","\u2636"],["\u264f","\u267a","\u265e","\u2637"],["\u2650","\u267b","\u265d","\u2686"],["\u2651","\u267c","\u265c","\u2687"],["\u2652","\u267d","\u265b",
168
+ "\u2688"],["\u2653","\u2672","\u265a","\u2689"],["Bksp","Bksp"]],[["\u263f","\u2680","\u268a","\u26a2"],["\u2640","\u2681","\u268b","\u26a3"],["\u2641","\u2682","\u268c","\u26a4"],["\u2642","\u2683","\u268d","\u26a5"],["\u2643","\u2684","\u268e","\u26a6"],["\u2644","\u2685","\u268f","\u26a7"],["\u2645","\u2620","\u26ff","\u26a8"],["\u2646","\u2622","\u2692","\u26a9"],["\u2647","\u2623","\u2693","\u26b2"],["\u2669","\u266d","\u2694","\u26ac"],["\u266a","\u266e","\u2695","\u26ad"],["\u266b","\u266f",
169
+ "\u2696","\u26ae"],["\u266c","\u2607","\u2697","\u26af"],["\u26f9","\u2608","\u2698","\u26b0"],["\u267f","\u262e","\u2638","\u2609"]],[["Tab","Tab"],["\u261e","\u261c","\u261d","\u261f"],["\u261b","\u261a","\u2618","\u2619"],["\u2602","\u2614","\u26f1","\u26d9"],["\u2615","\u2668","\u26fe","\u26d8"],["\u263a","\u2639","\u263b","\u26dc"],["\u2617","\u2616","\u26ca","\u26c9"],["\u2660","\u2663","\u2665","\u2666"],["\u2664","\u2667","\u2661","\u2662"],["\u26c2","\u26c0","\u26c3","\u26c1"],["\u2624",
170
+ "\u2625","\u269a","\u26b1"],["\u2610","\u2611","\u2612","\u2613"],["\u2628","\u2626","\u2627","\u2629"],["\u262a","\u262b","\u262c","\u262d"],["\u26fa","\u26fb","\u26fc","\u26fd"]],[["Caps","Caps"],["\u262f","\u2670","\u2671","\u267e"],["\u263c","\u2699","\u263d","\u263e"],["\u26c4","\u2603","\u26c7","\u26c6"],["\u26a0","\u26a1","\u2621","\u26d4"],["\u26e4","\u26e5","\u26e6","\u26e7"],["\u260a","\u260b","\u260c","\u260d"],["\u269c","\u269b","\u269d","\u2604"],["\u26b3","\u26b4","\u26b5","\u26b6"],
171
+ ["\u26b7","\u26bf","\u26b8","\u26f8"],["\u26b9","\u26ba","\u26bb","\u26bc"],["\u26bd","\u26be","\u269f","\u269e"],["Enter","Enter"]],[["Shift","Shift"],["\u2600","\u2601","\u26c5","\u26c8"],["\u2691","\u2690","\u26ab","\u26aa"],["\u26cb","\u26cc","\u26cd","\u26ce"],["\u26cf","\u26d0","\u26d1","\u26d2"],["\u26d3","\u26d5","\u26d6","\u26d7"],["\u26da","\u26db","\u26dd","\u26de"],["\u26df","\u26e0","\u26e1","\u26e2"],["\u26e3","\u26e8","\u26e9","\u26ea"],["\u26eb","\u26ec","\u26ed","\u26ee"],["\u26ef",
172
+ "\u26f0","\u26f2","\u26f3"],["\u26f4","\u26f5","\u26f6","\u26f7"],["Shift","Shift"]],[["AltLk","AltLk"],[" "," "," "," "],["Alt","Alt"]]]};this.VKI_layout["\u041c\u043e\u043d\u0433\u043e\u043b"]={name:"Mongolian Cyrillic",keys:[[["=","+"],["\u2116","1"],["-","2"],['"',"3"],["\u20ae","4"],[":","5"],[".","6"],["_","7"],[",","8"],["%","9"],["?","0"],["\u0435","\u0415"],["\u0449","\u0429"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0444","\u0424"],["\u0446","\u0426"],["\u0443","\u0423"],["\u0436","\u0416"],
173
+ ["\u044d","\u042d"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u04af","\u04ae"],["\u0437","\u0417"],["\u043a","\u041a"],["\u044a","\u042a"],["\\","|"]],[["Caps","Caps"],["\u0439","\u0419"],["\u044b","\u042b"],["\u0431","\u0411"],["\u04e9","\u04e8"],["\u0430","\u0410"],["\u0445","\u0425"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u043f","\u041f"],["Enter","Enter"]],[["Shift","Shift"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0451","\u0401"],
174
+ ["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0432","\u0412"],["\u044e","\u042e"],["Shift","Shift"]],[[" "," "]]],lang:["mn"]};this.VKI_layout["\u092e\u0930\u093e\u0920\u0940"]={name:"Marathi",keys:[[["","","`","~"],["\u0967","\u090d","1","!"],["\u0968","\u0945","2","@"],["\u0969","\u094d\u0930","3","#"],["\u096a","\u0930\u094d","4","$"],["\u096b","\u091c\u094d\u091e","5","%"],["\u096c","\u0924\u094d\u0930","6","^"],["\u096d","\u0915\u094d\u0937",
175
+ "7","&"],["\u096e","\u0936\u094d\u0930","8","*"],["\u096f","(","9","("],["\u0966",")","0",")"],["-","\u0903","-","_"],["\u0943","\u090b","=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u094c","\u0914"],["\u0948","\u0910"],["\u093e","\u0906"],["\u0940","\u0908"],["\u0942","\u090a"],["\u092c","\u092d"],["\u0939","\u0919"],["\u0917","\u0918"],["\u0926","\u0927"],["\u091c","\u091d"],["\u0921","\u0922","[","{"],["\u093c","\u091e","]","}"],["\u0949","\u0911","\\","|"]],[["Caps","Caps"],["\u094b","\u0913"],
176
+ ["\u0947","\u090f"],["\u094d","\u0905"],["\u093f","\u0907"],["\u0941","\u0909"],["\u092a","\u092b"],["\u0930","\u0931"],["\u0915","\u0916"],["\u0924","\u0925"],["\u091a","\u091b",";",":"],["\u091f","\u0920","'",'"'],["Enter","Enter"]],[["Shift","Shift"],[""],["\u0902","\u0901","","\u0950"],["\u092e","\u0923"],["\u0928"],["\u0935"],["\u0932","\u0933"],["\u0938","\u0936"],[",","\u0937",",","<"],[".","\u0964",".",">"],["\u092f","\u095f","/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],
177
+ lang:["mr"]};this.VKI_layout["\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c"]={name:"Burmese",keys:[[["\u1039`","~"],["\u1041","\u100d"],["\u1042","\u100e"],["\u1043","\u100b"],["\u1044","\u1000\u103b\u1015\u103a"],["\u1045","%"],["\u1046","/"],["\u1047","\u101b"],["\u1048","\u1002"],["\u1049","("],["\u1040",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u1006","\u1029"],["\u1010","\u1040"],["\u1014","\u103f"],["\u1019","\u1023"],["\u1021","\u1024"],["\u1015","\u104c"],
178
+ ["\u1000","\u1009"],["\u1004","\u104d"],["\u101e","\u1025"],["\u1005","\u100f"],["\u101f","\u1027"],["\u2018","\u2019"],["\u104f","\u100b\u1039\u100c"]],[["Caps","Caps"],["\u200b\u1031","\u1017"],["\u200b\u103b","\u200b\u103e"],["\u200b\u102d","\u200b\u102e"],["\u200b\u103a","\u1004\u103a\u1039\u200b"],["\u200b\u102b","\u200b\u103d"],["\u200b\u1037","\u200b\u1036"],["\u200b\u103c","\u200b\u1032"],["\u200b\u102f","\u200b\u102f"],["\u200b\u1030","\u200b\u1030"],["\u200b\u1038","\u200b\u102b\u103a"],
179
+ ["\u1012","\u1013"],["Enter","Enter"]],[["Shift","Shift"],["\u1016","\u1007"],["\u1011","\u100c"],["\u1001","\u1003"],["\u101c","\u1020"],["\u1018","\u1026"],["\u100a","\u1008"],["\u200b\u102c","\u102a"],["\u101a","\u101b"],[".","\u101b"],["\u104b","\u104a"],["Shift","Shift"]],[[" "," "]]],lang:["my"]};this.VKI_layout.Nederlands={name:"Dutch",keys:[[["@","\u00a7","\u00ac"],["1","!","\u00b9"],["2",'"',"\u00b2"],["3","#","\u00b3"],["4","$","\u00bc"],["5","%","\u00bd"],["6","&","\u00be"],["7","_","\u00a3"],
180
+ ["8","(","{"],["9",")","}"],["0","'"],["/","?","\\"],["\u00b0","~","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R","\u00b6"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00a8","^"],["*","|"],["<",">"]],[["Caps","Caps"],["a","A"],["s","S","\u00df"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["+","\u00b1"],["\u00b4","`"],["Enter","Enter"]],[["Shift","Shift"],["]","[","\u00a6"],["z","Z","\u00ab"],["x","X","\u00bb"],
181
+ ["c","C","\u00a2"],["v","V"],["b","B"],["n","N"],["m","M","\u00b5"],[",",";"],[".",":","\u00b7"],["-","="],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["nl"]};this.VKI_layout.Norsk={name:"Norwegian",keys:[[["|","\u00a7"],["1","!"],["2",'"',"@"],["3","#","\u00a3"],["4","\u00a4","$"],["5","%"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["+","?"],["\\","`","\u00b4"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y",
182
+ "Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e5","\u00c5"],["\u00a8","^","~"],["'","*"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f8","\u00d8"],["\u00e6","\u00c6"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u03bc","\u039c"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["no","nb","nn"]};this.VKI_layout["\u067e\u069a\u062a\u0648"]=
183
+ {name:"Pashto",keys:[[["\u200d","\u00f7","`"],["\u06f1","!","`"],["\u06f2","\u066c","@"],["\u06f3","\u066b","\u066b"],["\u06f4","\u00a4","\u00a3"],["\u06f5","\u066a","%"],["\u06f6","\u00d7","^"],["\u06f7","\u00ab","&"],["\u06f8","\u00bb","*"],["\u06f9","(","\ufdf2"],["\u06f0",")","\ufefb"],["-","\u0640","_"],["=","+","\ufe87","\u00f7"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0636","\u0652","\u06d5"],["\u0635","\u064c","\u0653"],["\u062b","\u064d","\u20ac"],["\u0642","\u064b","\ufef7"],["\u0641","\u064f",
184
+ "\ufef5"],["\u063a","\u0650","'"],["\u0639","\u064e","\ufe84"],["\u0647","\u0651","\u0670"],["\u062e","\u0681","'"],["\u062d","\u0685",'"'],["\u062c","]","}"],["\u0686","[","{"],["\\","\u066d","|"]],[["Caps","Caps"],["\u0634","\u069a","\ufbb0"],["\u0633","\u06cd","\u06d2"],["\u06cc","\u064a","\u06d2"],["\u0628","\u067e","\u06ba"],["\u0644","\u0623","\u06b7"],["\u0627","\u0622","\u0671"],["\u062a","\u067c","\u0679"],["\u0646","\u06bc","<"],["\u0645","\u0629",">"],["\u06a9",":","\u0643"],["\u06af",
185
+ "\u061b","\u06ab"],["Enter","Enter"]],[["Shift","Shift"],["\u0638","\u0626","?"],["\u0637","\u06d0",";"],["\u0632","\u0698","\u0655"],["\u0631","\u0621","\u0654"],["\u0630","\u200c","\u0625"],["\u062f","\u0689","\u0688"],["\u0693","\u0624","\u0691"],["\u0648","\u060c",","],["\u0696",".","\u06c7"],["/","\u061f","\u06c9"],["Shift","Shift","\u064d"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["ps"]};this.VKI_layout["\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"]={name:"Punjabi (Gurmukhi)",keys:[[[""],["1","\u0a4d\u0a35",
186
+ "\u0a67","\u0a67"],["2","\u0a4d\u0a2f","\u0a68","\u0a68"],["3","\u0a4d\u0a30","\u0a69","\u0a69"],["4","\u0a71","\u0a6a","\u0a6a"],["5","","\u0a6b","\u0a6b"],["6","","\u0a6c","\u0a6c"],["7","","\u0a6d","\u0a6d"],["8","","\u0a6e","\u0a6e"],["9","(","\u0a6f","\u0a6f"],["0",")","\u0a66","\u0a66"],["-"],[""],["Bksp","Bksp"]],[["Tab","Tab"],["\u0a4c","\u0a14"],["\u0a48","\u0a10"],["\u0a3e","\u0a06"],["\u0a40","\u0a08"],["\u0a42","\u0a0a"],["\u0a2c","\u0a2d"],["\u0a39","\u0a19"],["\u0a17","\u0a18","\u0a5a",
187
+ "\u0a5a"],["\u0a26","\u0a27"],["\u0a1c","\u0a1d","\u0a5b","\u0a5b"],["\u0a21","\u0a22","\u0a5c","\u0a5c"],["Enter","Enter"]],[["Caps","Caps"],["\u0a4b","\u0a13"],["\u0a47","\u0a0f"],["\u0a4d","\u0a05"],["\u0a3f","\u0a07"],["\u0a41","\u0a09"],["\u0a2a","\u0a2b","\u0a5e","\u0a5e"],["\u0a30"],["\u0a15","\u0a16","\u0a59","\u0a59"],["\u0a24","\u0a25"],["\u0a1a","\u0a1b"],["\u0a1f","\u0a20"],["\u0a3c","\u0a1e"]],[["Shift","Shift"],[""],["\u0a02","\u0a02"],["\u0a2e","\u0a23"],["\u0a28"],["\u0a35","\u0a72",
188
+ "\u0a73","\u0a73"],["\u0a32","\u0a33"],["\u0a38","\u0a36"],[","],[".","|","\u0965","\u0965"],["\u0a2f"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["pa"]};this.VKI_layout["\u62fc\u97f3 (Pinyin)"]={name:"Pinyin",keys:[[["`","~","\u4e93","\u301c"],["1","!","\uff62"],["2","@","\uff63"],["3","#","\u301d"],["4","$","\u301e"],["5","%","\u301f"],["6","^","\u3008"],["7","&","\u3009"],["8","*","\u302f"],["9","(","\u300a"],["0",")","\u300b"],["-","_","\u300e"],["=","+","\u300f"],["Bksp",
189
+ "Bksp"]],[["Tab","Tab"],["q","Q","\u0101","\u0100"],["w","W","\u00e1","\u00c1"],["e","E","\u01ce","\u01cd"],["r","R","\u00e0","\u00c0"],["t","T","\u0113","\u0112"],["y","Y","\u00e9","\u00c9"],["u","U","\u011b","\u011a"],["i","I","\u00e8","\u00c8"],["o","O","\u012b","\u012a"],["p","P","\u00ed","\u00cd"],["[","{","\u01d0","\u01cf"],["]","}","\u00ec","\u00cc"],["\\","|","\u3020"]],[["Caps","Caps"],["a","A","\u014d","\u014c"],["s","S","\u00f3","\u00d3"],["d","D","\u01d2","\u01d1"],["f","F","\u00f2","\u00d2"],
190
+ ["g","G","\u00fc","\u00dc"],["h","H","\u016b","\u016a"],["j","J","\u00fa","\u00da"],["k","K","\u01d4","\u01d3"],["l","L","\u00f9","\u00d9"],[";",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["z","Z","\u01d6","\u01d5"],["x","X","\u01d8","\u01d7"],["c","C","\u01da","\u01d9"],["v","V","\u01dc","\u01db"],["b","B"],["n","N"],["m","M"],[",","<","\u3001"],[".",">","\u3002"],["/","?"],["Shift","Shift"]],[["AltLk","AltLk"],[" "," "," "," "],["Alt","Alt"]]],lang:["zh-Latn"]};this.VKI_layout.Polski=
191
+ {name:"Polish (214)",keys:[[["\u02db","\u00b7"],["1","!","~"],["2",'"',"\u02c7"],["3","#","^"],["4","\u00a4","\u02d8"],["5","%","\u00b0"],["6","&","\u02db"],["7","/","`"],["8","(","\u00b7"],["9",")","\u00b4"],["0","=","\u02dd"],["+","?","\u00a8"],["'","*","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\\"],["w","W","\u00a6"],["e","E"],["r","R"],["t","T"],["z","Z"],["u","U","\u20ac"],["i","I"],["o","O"],["p","P"],["\u017c","\u0144","\u00f7"],["\u015b","\u0107","\u00d7"],["\u00f3","\u017a"]],[["Caps",
192
+ "Caps"],["a","A"],["s","S","\u0111"],["d","D","\u0110"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u0142","\u0141","$"],["\u0105","\u0119","\u00df"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["y","Y"],["x","X"],["c","C"],["v","V","@"],["b","B","{"],["n","N","}"],["m","M","\u00a7"],[",",";","<"],[".",":",">"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]]};this.VKI_layout["Polski Programisty"]={name:"Polish Programmers",keys:[[["`","~"],["1","!"],["2",
193
+ "@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u0119","\u0118"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O","\u00f3","\u00d3"],["p","P"],["[","{"],["]","}"],["\\","|"]],[["Caps","Caps"],["a","A","\u0105","\u0104"],["s","S","\u015b","\u015a"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L","\u0142","\u0141"],[";",":"],["'",'"'],["Enter","Enter"]],
194
+ [["Shift","Shift"],["z","Z","\u017c","\u017b"],["x","X","\u017a","\u0179"],["c","C","\u0107","\u0106"],["v","V"],["b","B"],["n","N","\u0144","\u0143"],["m","M"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["pl"]};this.VKI_layout["Portugu\u00eas Brasileiro"]={name:"Portuguese (Brazil)",keys:[[["'",'"'],["1","!","\u00b9"],["2","@","\u00b2"],["3","#","\u00b3"],["4","$","\u00a3"],["5","%","\u00a2"],["6","\u00a8","\u00ac"],["7","&"],["8","*"],["9","("],["0",
195
+ ")"],["-","_"],["=","+","\u00a7"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","/"],["w","W","?"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00b4","`"],["[","{","\u00aa"],["Enter","Enter"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e7","\u00c7"],["~","^"],["]","}","\u00ba"],["/","?"]],[["Shift","Shift"],["\\","|"],["z","Z"],["x","X"],["c","C","\u20a2"],["v","V"],["b","B"],["n","N"],
196
+ ["m","M"],[",","<"],[".",">"],[":",":"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["pt-BR"]};this.VKI_layout["Portugu\u00eas"]={name:"Portuguese",keys:[[["\\","|"],["1","!"],["2",'"',"@"],["3","#","\u00a3"],["4","$","\u00a7"],["5","%"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["'","?"],["\u00ab","\u00bb"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["+","*",
197
+ "\u00a8"],["\u00b4","`"],["~","^"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e7","\u00c7"],["\u00ba","\u00aa"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\\"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["pt"]};this.VKI_layout["Rom\u00e2n\u0103"]={name:"Romanian",keys:[[["\u201e","\u201d","`","~"],["1","!",
198
+ "~"],["2","@","\u02c7"],["3","#","^"],["4","$","\u02d8"],["5","%","\u00b0"],["6","^","\u02db"],["7","&","`"],["8","*","\u02d9"],["9","(","\u00b4"],["0",")","\u02dd"],["-","_","\u00a8"],["=","+","\u00b8","\u00b1"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P","\u00a7"],["\u0103","\u0102","[","{"],["\u00ee","\u00ce","]","}"],["\u00e2","\u00c2","\\","|"]],[["Caps","Caps"],["a","A"],["s","S","\u00df"],["d","D",
199
+ "\u00f0","\u00d0"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L","\u0142","\u0141"],[this.VKI_isIElt8?"\u015f":"\u0219",this.VKI_isIElt8?"\u015e":"\u0218",";",":"],[this.VKI_isIElt8?"\u0163":"\u021b",this.VKI_isIElt8?"\u0162":"\u021a","'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["z","Z"],["x","X"],["c","C","\u00a9"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";","<","\u00ab"],[".",":",">","\u00bb"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ro"]};
200
+ this.VKI_layout["\u0420\u0443\u0441\u0441\u043a\u0438\u0439"]={name:"Russian",keys:[[["\u0451","\u0401"],["1","!"],["2",'"'],["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u0449","\u0429"],["\u0437","\u0417"],["\u0445","\u0425"],["\u044a","\u042a"],
201
+ ["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u044d","\u042d"],["Enter","Enter"]],[["Shift","Shift"],["/","|"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],[".",","],["Shift","Shift"]],
202
+ [[" "," "]]],lang:["ru"]};this.VKI_layout.Schweizerdeutsch={name:"Swiss German",keys:[[["\u00a7","\u00b0"],["1","+","\u00a6"],["2",'"',"@"],["3","*","#"],["4","\u00e7","\u00b0"],["5","%","\u00a7"],["6","&","\u00ac"],["7","/","|"],["8","(","\u00a2"],["9",")"],["0","="],["'","?","\u00b4"],["^","`","~"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00fc","\u00e8","["],["\u00a8","!","]"],["$","\u00a3","}"]],
203
+ [["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f6","\u00e9"],["\u00e4","\u00e0","{"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\\"],["y","Y"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["de-CH"]};this.VKI_layout.Shqip={name:"Albanian",keys:[[["\\","|"],["1","!","~"],["2",'"',"\u02c7"],["3","#","^"],["4","$","\u02d8"],
204
+ ["5","%","\u00b0"],["6","^","\u02db"],["7","&","`"],["8","*","\u02d9"],["9","(","\u00b4"],["0",")","\u02dd"],["-","_","\u00a8"],["=","+","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\\"],["w","W","|"],["e","E"],["r","R"],["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e7","\u00c7","\u00f7"],["[","{","\u00df"],["]","}","\u00a4"]],[["Caps","Caps"],["a","A"],["s","S","\u0111"],["d","D","\u0110"],["f","F","["],["g","G","]"],["h","H"],["j","J"],["k","K","\u0142"],["l","L","\u0141"],
205
+ ["\u00eb","\u00cb","$"],["@","'","\u00d7"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["y","Y"],["x","X"],["c","C"],["v","V","@"],["b","B","{"],["n","N","}"],["m","M","\u00a7"],[",",";","<"],[".",":",">"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["sq"]};this.VKI_layout["Sloven\u010dina"]={name:"Slovak",keys:[[[";","\u00b0"],["+","1","~"],["\u013e","2","\u02c7"],["\u0161","3","^"],["\u010d","4","\u02d8"],["\u0165","5","\u00b0"],["\u017e","6","\u02db"],["\u00fd",
206
+ "7","`"],["\u00e1","8","\u02d9"],["\u00ed","9","\u00b4"],["\u00e9","0","\u02dd"],["=","%","\u00a8"],["\u00b4","\u02c7","\u00b8"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\\"],["w","W","|"],["e","E","\u20ac"],["r","R"],["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P","'"],["\u00fa","/","\u00f7"],["\u00e4","(","\u00d7"],["\u0148",")","\u00a4"]],[["Caps","Caps"],["a","A"],["s","S","\u0111"],["d","D","\u0110"],["f","F","["],["g","G","]"],["h","H"],["j","J"],["k","K","\u0142"],["l","L","\u0141"],
207
+ ["\u00f4",'"',"$"],["\u00a7","!","\u00df"],["Enter","Enter"]],[["Shift","Shift"],["&","*","<"],["y","Y",">"],["x","X","#"],["c","C","&"],["v","V","@"],["b","B","{"],["n","N","}"],["m","M"],[",","?","<"],[".",":",">"],["-","_","*"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["sk"]};this.VKI_layout["Sloven\u0161\u010dina"]={name:"Slovenian",keys:this.VKI_layout.Bosanski.keys.slice(0),lang:["sl"]};this.VKI_layout["\u0441\u0440\u043f\u0441\u043a\u0438"]={name:"Serbian Cyrillic",keys:[[["`",
208
+ "~"],["1","!"],["2",'"'],["3","#"],["4","$"],["5","%"],["6","&"],["7","/"],["8","("],["9",")"],["0","="],["'","?"],["+","*"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0459","\u0409"],["\u045a","\u040a"],["\u0435","\u0415","\u20ac"],["\u0440","\u0420"],["\u0442","\u0422"],["\u0437","\u0417"],["\u0443","\u0423"],["\u0438","\u0418"],["\u043e","\u041e"],["\u043f","\u041f"],["\u0448","\u0428"],["\u0452","\u0402"],["\u0436","\u0416"]],[["Caps","Caps"],["\u0430","\u0410"],["\u0441","\u0421"],["\u0434","\u0414"],
209
+ ["\u0444","\u0424"],["\u0433","\u0413"],["\u0445","\u0425"],["\u0458","\u0408"],["\u043a","\u041a"],["\u043b","\u041b"],["\u0447","\u0427"],["\u045b","\u040b"],["Enter","Enter"]],[["Shift","Shift"],["<",">"],["\u0455","\u0405"],["\u045f","\u040f"],["\u0446","\u0426"],["\u0432","\u0412"],["\u0431","\u0411"],["\u043d","\u041d"],["\u043c","\u041c"],[",",";","<"],[".",":",">"],["-","_","\u00a9"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["sr-Cyrl"]};this.VKI_layout.Srpski={name:"Serbian Latin",
210
+ keys:this.VKI_layout.Bosanski.keys.slice(0),lang:["sr"]};this.VKI_layout.Suomi={name:"Finnish",keys:[[["\u00a7","\u00bd"],["1","!"],["2",'"',"@"],["3","#","\u00a3"],["4","\u00a4","$"],["5","%","\u20ac"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["+","?","\\"],["\u00b4","`"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\u00e2","\u00c2"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T","\u0167","\u0166"],["y","Y"],["u","U"],["i","I","\u00ef","\u00cf"],["o","O","\u00f5","\u00d5"],
211
+ ["p","P"],["\u00e5","\u00c5"],["\u00a8","^","~"],["'","*"]],[["Caps","Caps"],["a","A","\u00e1","\u00c1"],["s","S","\u0161","\u0160"],["d","D","\u0111","\u0110"],["f","F","\u01e5","\u01e4"],["g","G","\u01e7","\u01e6"],["h","H","\u021f","\u021e"],["j","J"],["k","K","\u01e9","\u01e8"],["l","L"],["\u00f6","\u00d6","\u00f8","\u00d8"],["\u00e4","\u00c4","\u00e6","\u00c6"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|"],["z","Z","\u017e","\u017d"],["x","X"],["c","C","\u010d","\u010c"],["v","V","\u01ef",
212
+ "\u01ee"],["b","B","\u0292","\u01b7"],["n","N","\u014b","\u014a"],["m","M","\u00b5"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[["Alt","Alt"],[" "," "," "," "],["AltGr","AltGr"]]],lang:["fi"]};this.VKI_layout.Svenska={name:"Swedish",keys:[[["\u00a7","\u00bd"],["1","!"],["2",'"',"@"],["3","#","\u00a3"],["4","\u00a4","$"],["5","%","\u20ac"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["+","?","\\"],["\u00b4","`"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e",
213
+ "E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e5","\u00c5"],["\u00a8","^","~"],["'","*"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00f6","\u00d6"],["\u00e4","\u00c4"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M","\u03bc","\u039c"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],
214
+ lang:["sv"]};this.VKI_layout["Swiss Fran\u00e7ais"]={name:"Swiss French",keys:[[["\u00a7","\u00b0"],["1","+","\u00a6"],["2",'"',"@"],["3","*","#"],["4","\u00e7","\u00b0"],["5","%","\u00a7"],["6","&","\u00ac"],["7","/","|"],["8","(","\u00a2"],["9",")"],["0","="],["'","?","\u00b4"],["^","`","~"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["z","Z"],["u","U"],["i","I"],["o","O"],["p","P"],["\u00e8","\u00fc","["],["\u00a8","!","]"],["$","\u00a3","}"]],[["Caps",
215
+ "Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u00e9","\u00f6"],["\u00e0","\u00e4","{"],["Enter","Enter"]],[["Shift","Shift"],["<",">","\\"],["y","Y"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",",";"],[".",":"],["-","_"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["fr-CH"]};this.VKI_layout["\u0723\u0718\u072a\u071d\u071d\u0710"]={name:"Syriac",keys:[[["\u070f","\u032e","\u0651","\u0651"],["1","!","\u0701",
216
+ "\u0701"],["2","\u030a","\u0702","\u0702"],["3","\u0325","\u0703","\u0703"],["4","\u0749","\u0704","\u0704"],["5","\u2670","\u0705","\u0705"],["6","\u2671","\u0708","\u0708"],["7","\u070a","\u0709","\u0709"],["8","\u00bb","\u070b","\u070b"],["9",")","\u070c","\u070c"],["0","(","\u070d","\u070d"],["-","\u00ab","\u250c","\u250c"],["=","+","\u2510","\u2510"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0714","\u0730","\u064e","\u064e"],["\u0728","\u0733","\u064b","\u064b"],["\u0716","\u0736","\u064f","\u064f"],
217
+ ["\u0729","\u073a","\u064c","\u064c"],["\u0726","\u073d","\u0653","\u0653"],["\u071c","\u0740","\u0654","\u0654"],["\u0725","\u0741","\u0747","\u0747"],["\u0717","\u0308","\u0743","\u0743"],["\u071e","\u0304","\u0745","\u0745"],["\u071a","\u0307","\u032d","\u032d"],["\u0713","\u0303"],["\u0715","\u074a"],["\u0706",":"]],[["Caps","Caps"],["\u072b","\u0731","\u0650","\u0650"],["\u0723","\u0734","\u064d","\u064d"],["\u071d","\u0737"],["\u0712","\u073b","\u0621","\u0621"],["\u0720","\u073e","\u0655",
218
+ "\u0655"],["\u0710","\u0711","\u0670","\u0670"],["\u072c","\u0640","\u0748","\u0748"],["\u0722","\u0324","\u0744","\u0744"],["\u0721","\u0331","\u0746","\u0746"],["\u071f","\u0323"],["\u071b","\u0330"],["Enter","Enter"]],[["Shift","Shift"],["]","\u0732"],["[","\u0735","\u0652","\u0652"],["\u0724","\u0738"],["\u072a","\u073c","\u200d"],["\u0727","\u073f","\u200c"],["\u0700","\u0739","\u200e"],[".","\u0742","\u200f"],["\u0718","\u060c"],["\u0719","\u061b"],["\u0707","\u061f"],["Shift","Shift"]],[[" ",
219
+ " "," "," "],["AltGr","AltGr"]]],lang:["syc"]};this.VKI_layout["\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"]={name:"Tamil",keys:[[["\u0bca","\u0b92"],["1","","\u0be7"],["2","","\u0be8"],["3","","\u0be9"],["4","","\u0bea"],["5","","\u0beb"],["6","\u0ba4\u0bcd\u0bb0","\u0bec"],["7","\u0b95\u0bcd\u0bb7","\u0bed"],["8","\u0bb7\u0bcd\u0bb0","\u0bee"],["9","","\u0bef"],["0","","\u0bf0"],["-","\u0b83","\u0bf1"],["","","\u0bf2"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0bcc","\u0b94"],["\u0bc8","\u0b90"],["\u0bbe","\u0b86"],
220
+ ["\u0bc0","\u0b88"],["\u0bc2","\u0b8a"],["\u0baa","\u0baa"],["\u0bb9","\u0b99"],["\u0b95","\u0b95"],["\u0ba4","\u0ba4"],["\u0b9c","\u0b9a"],["\u0b9f","\u0b9f"],["\u0b9e"]],[["Caps","Caps"],["\u0bcb","\u0b93"],["\u0bc7","\u0b8f"],["\u0bcd","\u0b85"],["\u0bbf","\u0b87"],["\u0bc1","\u0b89"],["\u0baa","\u0baa"],["\u0bb0","\u0bb1"],["\u0b95","\u0b95"],["\u0ba4","\u0ba4"],["\u0b9a","\u0b9a"],["\u0b9f","\u0b9f"],["Enter","Enter"]],[["Shift","Shift"],["\u0bc6","\u0b8e"],[""],["\u0bae","\u0ba3"],["\u0ba8",
221
+ "\u0ba9"],["\u0bb5","\u0bb4"],["\u0bb2","\u0bb3"],["\u0bb8","\u0bb7"],[",","\u0bb7"],[".","\u0bb8\u0bcd\u0bb0\u0bc0"],["\u0baf","\u0baf"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["ta"]};this.VKI_layout["\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"]={name:"Telugu",keys:[[["\u0c4a","\u0c12"],["1","","\u0c67"],["2","","\u0c68"],["3","\u0c4d\u0c30","\u0c69"],["4","","\u0c6a"],["5","\u0c1c\u0c4d\u0c1e","\u0c6b"],["6","\u0c24\u0c4d\u0c30","\u0c6c"],["7","\u0c15\u0c4d\u0c37","\u0c6d"],["8",
222
+ "\u0c36\u0c4d\u0c30","\u0c6e"],["9","(","\u0c6f"],["0",")","\u0c66"],["-","\u0c03"],["\u0c43","\u0c0b","\u0c44"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0c4c","\u0c14"],["\u0c48","\u0c10","\u0c56"],["\u0c3e","\u0c06"],["\u0c40","\u0c08","","\u0c61"],["\u0c42","\u0c0a"],["\u0c2c"],["\u0c39","\u0c19"],["\u0c17","\u0c18"],["\u0c26","\u0c27"],["\u0c1c","\u0c1d"],["\u0c21","\u0c22"],["","\u0c1e"]],[["Caps","Caps"],["\u0c4b","\u0c13"],["\u0c47","\u0c0f","\u0c55"],["\u0c4d","\u0c05"],["\u0c3f","\u0c07","","\u0c0c"],
223
+ ["\u0c41","\u0c09"],["\u0c2a","\u0c2b"],["\u0c30","\u0c31"],["\u0c15","\u0c16"],["\u0c24","\u0c25"],["\u0c1a","\u0c1b"],["\u0c1f","\u0c25"],["Enter","Enter"]],[["Shift","Shift"],["\u0c46","\u0c0e"],["\u0c02","\u0c01"],["\u0c2e","\u0c23"],["\u0c28","\u0c28"],["\u0c35"],["\u0c32","\u0c33"],["\u0c38","\u0c36"],[",","\u0c37"],["."],["\u0c2f"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["te"]};this.VKI_layout["Ti\u1ebfng Vi\u1ec7t"]={name:"Vietnamese",keys:[[["`","~","`","~"],["\u0103",
224
+ "\u0102","1","!"],["\u00e2","\u00c2","2","@"],["\u00ea","\u00ca","3","#"],["\u00f4","\u00d4","4","$"],["\u0300","\u0300","5","%"],["\u0309","\u0309","6","^"],["\u0303","\u0303","7","&"],["\u0301","\u0301","8","*"],["\u0323","\u0323","9","("],["\u0111","\u0110","0",")"],["-","_","-","_"],["\u20ab","+","=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","q","Q"],["w","W","w","W"],["e","E","e","E"],["r","R","r","R"],["t","T","t","T"],["y","Y","y","Y"],["u","U","u","U"],["i","I","i","I"],["o","O","o","O"],
225
+ ["p","P","p","P"],["\u01b0","\u01af","[","{"],["\u01a1","\u01a0","]","}"],["\\","|","\\","|"]],[["Caps","Caps"],["a","A","a","A"],["s","S","s","S"],["d","D","d","D"],["f","F","f","F"],["g","G","g","G"],["h","H","h","H"],["j","J","j","J"],["k","K","k","K"],["l","L","l","L"],[";",":",";",":"],["'",'"',"'",'"'],["Enter","Enter"]],[["Shift","Shift"],["z","Z","z","Z"],["x","X","x","X"],["c","C","c","C"],["v","V","v","V"],["b","B","b","B"],["n","N","n","N"],["m","M","m","M"],[",","<",",","<"],[".",">",
226
+ ".",">"],["/","?","/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["vi"]};this.VKI_layout["\u0e44\u0e17\u0e22 Kedmanee"]={name:"Thai Kedmanee",keys:[[["_","%"],["\u0e45","+"],["/","\u0e51"],["-","\u0e52"],["\u0e20","\u0e53"],["\u0e16","\u0e54"],["\u0e38","\u0e39"],["\u0e36","\u0e3f"],["\u0e04","\u0e55"],["\u0e15","\u0e56"],["\u0e08","\u0e57"],["\u0e02","\u0e58"],["\u0e0a","\u0e59"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0e46","\u0e50"],["\u0e44",'"'],["\u0e33","\u0e0e"],["\u0e1e",
227
+ "\u0e11"],["\u0e30","\u0e18"],["\u0e31","\u0e4d"],["\u0e35","\u0e4a"],["\u0e23","\u0e13"],["\u0e19","\u0e2f"],["\u0e22","\u0e0d"],["\u0e1a","\u0e10"],["\u0e25",","],["\u0e03","\u0e05"]],[["Caps","Caps"],["\u0e1f","\u0e24"],["\u0e2b","\u0e06"],["\u0e01","\u0e0f"],["\u0e14","\u0e42"],["\u0e40","\u0e0c"],["\u0e49","\u0e47"],["\u0e48","\u0e4b"],["\u0e32","\u0e29"],["\u0e2a","\u0e28"],["\u0e27","\u0e0b"],["\u0e07","."],["Enter","Enter"]],[["Shift","Shift"],["\u0e1c","("],["\u0e1b",")"],["\u0e41","\u0e09"],
228
+ ["\u0e2d","\u0e2e"],["\u0e34","\u0e3a"],["\u0e37","\u0e4c"],["\u0e17","?"],["\u0e21","\u0e12"],["\u0e43","\u0e2c"],["\u0e1d","\u0e26"],["Shift","Shift"]],[[" "," "]]],lang:["th"]};this.VKI_layout["\u0e44\u0e17\u0e22 Pattachote"]={name:"Thai Pattachote",keys:[[["_","\u0e3f"],["=","+"],["\u0e52",'"'],["\u0e53","/"],["\u0e54",","],["\u0e55","?"],["\u0e39","\u0e38"],["\u0e57","_"],["\u0e58","."],["\u0e59","("],["\u0e50",")"],["\u0e51","-"],["\u0e56","%"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0e47","\u0e4a"],
229
+ ["\u0e15","\u0e24"],["\u0e22","\u0e46"],["\u0e2d","\u0e0d"],["\u0e23","\u0e29"],["\u0e48","\u0e36"],["\u0e14","\u0e1d"],["\u0e21","\u0e0b"],["\u0e27","\u0e16"],["\u0e41","\u0e12"],["\u0e43","\u0e2f"],["\u0e0c","\u0e26"],["\uf8c7","\u0e4d"]],[["Caps","Caps"],["\u0e49","\u0e4b"],["\u0e17","\u0e18"],["\u0e07","\u0e33"],["\u0e01","\u0e13"],["\u0e31","\u0e4c"],["\u0e35","\u0e37"],["\u0e32","\u0e1c"],["\u0e19","\u0e0a"],["\u0e40","\u0e42"],["\u0e44","\u0e06"],["\u0e02","\u0e11"],["Enter","Enter"]],[["Shift",
230
+ "Shift"],["\u0e1a","\u0e0e"],["\u0e1b","\u0e0f"],["\u0e25","\u0e10"],["\u0e2b","\u0e20"],["\u0e34","\u0e31"],["\u0e04","\u0e28"],["\u0e2a","\u0e2e"],["\u0e30","\u0e1f"],["\u0e08","\u0e09"],["\u0e1e","\u0e2c"],["Shift","Shift"]],[[" "," "]]]};this.VKI_layout["\u0422\u0430\u0442\u0430\u0440\u0447\u0430"]={name:"Tatar",keys:[[["\u04bb","\u04ba","\u0451","\u0401"],["1","!"],["2",'"',"@"],["3","\u2116","#"],["4",";","$"],["5","%"],["6",":"],["7","?","["],["8","*","]"],["9","(","{"],["0",")","}"],["-",
231
+ "_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u04e9","\u04e8","\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u04d9","\u04d8","\u0449","\u0429"],["\u0437","\u0417"],["\u0445","\u0425"],["\u04af","\u04ae","\u044a","\u042a"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u044b","\u042b"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],
232
+ ["\u043b","\u041b"],["\u0434","\u0414"],["\u04a3","\u04a2","\u0436","\u0416"],["\u044d","\u042d","'"],["Enter","Enter"]],[["Shift","Shift"],["\u0491","\u0490"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u0497","\u0496","\u044c","\u042c"],["\u0431","\u0411","<"],["\u044e","\u042e",">"],[".",","],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["tt"]};this.VKI_layout["T\u00fcrk\u00e7e F"]={name:"Turkish F",
233
+ keys:[[["+","*","\u00ac"],["1","!","\u00b9","\u00a1"],["2",'"',"\u00b2"],["3","^","#","\u00b3"],["4","$","\u00bc","\u00a4"],["5","%","\u00bd"],["6","&","\u00be"],["7","'","{"],["8","(","["],["9",")","]"],["0","=","}"],["/","?","\\","\u00bf"],["-","_","|"],["Bksp","Bksp"]],[["Tab","Tab"],["f","F","@"],["g","G"],["\u011f","\u011e"],["\u0131","I","\u00b6","\u00ae"],["o","O"],["d","D","\u00a5"],["r","R"],["n","N"],["h","H","\u00f8","\u00d8"],["p","P","\u00a3"],["q","Q","\u00a8"],["w","W","~"],["x","X",
234
+ "`"]],[["Caps","Caps"],["u","U","\u00e6","\u00c6"],["i","\u0130","\u00df","\u00a7"],["e","E","\u20ac"],["a","A"," ","\u00aa"],["\u00fc","\u00dc"],["t","T"],["k","K"],["m","M"],["l","L"],["y","Y","\u00b4"],["\u015f","\u015e"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|","\u00a6"],["j","J","\u00ab","<"],["\u00f6","\u00d6","\u00bb",">"],["v","V","\u00a2","\u00a9"],["c","C"],["\u00e7","\u00c7"],["z","Z"],["s","S","\u00b5","\u00ba"],["b","B","\u00d7"],[".",":","\u00f7"],[",",";","-"],["Shift","Shift"]],
235
+ [[" "," "," "," "],["AltGr","AltGr"]]]};this.VKI_layout["T\u00fcrk\u00e7e Q"]={name:"Turkish Q",keys:[[['"',"\u00e9","<"],["1","!",">"],["2","'","\u00a3"],["3","^","#"],["4","+","$"],["5","%","\u00bd"],["6","&"],["7","/","{"],["8","(","["],["9",")","]"],["0","=","}"],["*","?","\\"],["-","_","|"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","@"],["w","W"],["e","E","\u20ac"],["r","R"],["t","T"],["y","Y"],["u","U"],["\u0131","I","i","\u0130"],["o","O"],["p","P"],["\u011f","\u011e","\u00a8"],["\u00fc","\u00dc",
236
+ "~"],[",",";","`"]],[["Caps","Caps"],["a","A","\u00e6","\u00c6"],["s","S","\u00df"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],["\u015f","\u015e","\u00b4"],["i","\u0130"],["Enter","Enter"]],[["Shift","Shift"],["<",">","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],["\u00f6","\u00d6"],["\u00e7","\u00c7"],[".",":"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["tr"]};this.VKI_layout["\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"]=
237
+ {name:"Ukrainian",keys:[[["\u00b4","~"],["1","!"],["2",'"'],["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d","\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u0449","\u0429"],["\u0437","\u0417"],["\u0445","\u0425"],["\u0457","\u0407"],["\u0491","\u0490"]],[["Caps","Caps"],["\u0444","\u0424"],["\u0456",
238
+ "\u0406"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u0454","\u0404"],["Enter","Enter"]],[["Shift","Shift"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438","\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],[".",","],["Shift","Shift"]],[[" "," "]]],lang:["uk"]};this.VKI_layout["United Kingdom"]={name:"United Kingdom",
239
+ keys:[[["`","\u00ac","\u00a6"],["1","!"],["2",'"'],["3","\u00a3"],["4","$","\u20ac"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E","\u00e9","\u00c9"],["r","R"],["t","T"],["y","Y"],["u","U","\u00fa","\u00da"],["i","I","\u00ed","\u00cd"],["o","O","\u00f3","\u00d3"],["p","P"],["[","{"],["]","}"],["#","~"]],[["Caps","Caps"],["a","A","\u00e1","\u00c1"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],
240
+ ["k","K"],["l","L"],[";",":"],["'","@"],["Enter","Enter"]],[["Shift","Shift"],["\\","|"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "," "," "],["AltGr","AltGr"]]],lang:["en-gb"]};this.VKI_layout["\u0627\u0631\u062f\u0648"]={name:"Urdu",keys:[[["`","~"],["1","!"],["2","@"],["3","#"],["4","$"],["5","\u066a"],["6","^"],["7","\u06d6"],["8","\u066d"],["9",")"],["0","("],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],
241
+ ["\u0637","\u0638"],["\u0635","\u0636"],["\u06be","\u0630"],["\u062f","\u0688"],["\u0679","\u062b"],["\u067e","\u0651"],["\u062a","\u06c3"],["\u0628","\u0640"],["\u062c","\u0686"],["\u062d","\u062e"],["]","}"],["[","{"],["\\","|"]],[["Caps","Caps"],["\u0645","\u0698"],["\u0648","\u0632"],["\u0631","\u0691"],["\u0646","\u06ba"],["\u0644","\u06c2"],["\u06c1","\u0621"],["\u0627","\u0622"],["\u06a9","\u06af"],["\u06cc","\u064a"],["\u061b",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u0642",
242
+ "\u200d"],["\u0641","\u200c"],["\u06d2","\u06d3"],["\u0633","\u200e"],["\u0634","\u0624"],["\u063a","\u0626"],["\u0639","\u200f"],["\u060c",">"],["\u06d4","<"],["/","\u061f"],["Shift","Shift"]],[[" "," "]]],lang:["ur"]};this.VKI_layout["US Standard"]={name:"US Standard",keys:[[["`","~"],["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q"],["w","W"],["e","E"],["r","R"],["t","T"],["y","Y"],["u",
243
+ "U"],["i","I"],["o","O"],["p","P"],["[","{"],["]","}"],["\\","|"]],[["Caps","Caps"],["a","A"],["s","S"],["d","D"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L"],[";",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["z","Z"],["x","X"],["c","C"],["v","V"],["b","B"],["n","N"],["m","M"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "]]],lang:["en-us"]};this.VKI_layout["US International"]={name:"US International",keys:[[["`","~"],["1","!","\u00a1","\u00b9"],["2","@","\u00b2"],
244
+ ["3","#","\u00b3"],["4","$","\u00a4","\u00a3"],["5","%","\u20ac"],["6","^","\u00bc"],["7","&","\u00bd"],["8","*","\u00be"],["9","(","\u2018"],["0",")","\u2019"],["-","_","\u00a5"],["=","+","\u00d7","\u00f7"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","\u00e4","\u00c4"],["w","W","\u00e5","\u00c5"],["e","E","\u00e9","\u00c9"],["r","R","\u00ae"],["t","T","\u00fe","\u00de"],["y","Y","\u00fc","\u00dc"],["u","U","\u00fa","\u00da"],["i","I","\u00ed","\u00cd"],["o","O","\u00f3","\u00d3"],["p","P","\u00f6",
245
+ "\u00d6"],["[","{","\u00ab"],["]","}","\u00bb"],["\\","|","\u00ac","\u00a6"]],[["Caps","Caps"],["a","A","\u00e1","\u00c1"],["s","S","\u00df","\u00a7"],["d","D","\u00f0","\u00d0"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L","\u00f8","\u00d8"],[";",":","\u00b6","\u00b0"],["'",'"',"\u00b4","\u00a8"],["Enter","Enter"]],[["Shift","Shift"],["z","Z","\u00e6","\u00c6"],["x","X"],["c","C","\u00a9","\u00a2"],["v","V"],["b","B"],["n","N","\u00f1","\u00d1"],["m","M","\u00b5"],[",","<","\u00e7",
246
+ "\u00c7"],[".",">"],["/","?","\u00bf"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["en"]};this.VKI_layout["\u040e\u0437\u0431\u0435\u043a\u0447\u0430"]={name:"Uzbek Cyrillic",keys:[[["\u0451","\u0401"],["1","!"],["2",'"'],["3","\u2116"],["4",";"],["5","%"],["6",":"],["7","?"],["8","*"],["9","("],["0",")"],["\u0493","\u0492"],["\u04b3","\u04b2"],["Bksp","Bksp"]],[["Tab","Tab"],["\u0439","\u0419"],["\u0446","\u0426"],["\u0443","\u0423"],["\u043a","\u041a"],["\u0435","\u0415"],["\u043d",
247
+ "\u041d"],["\u0433","\u0413"],["\u0448","\u0428"],["\u045e","\u040e"],["\u0437","\u0417"],["\u0445","\u0425"],["\u044a","\u042a"],["\\","/"]],[["Caps","Caps"],["\u0444","\u0424"],["\u049b","\u049a"],["\u0432","\u0412"],["\u0430","\u0410"],["\u043f","\u041f"],["\u0440","\u0420"],["\u043e","\u041e"],["\u043b","\u041b"],["\u0434","\u0414"],["\u0436","\u0416"],["\u044d","\u042d"],["Enter","Enter"]],[["Shift","Shift"],["\u044f","\u042f"],["\u0447","\u0427"],["\u0441","\u0421"],["\u043c","\u041c"],["\u0438",
248
+ "\u0418"],["\u0442","\u0422"],["\u044c","\u042c"],["\u0431","\u0411"],["\u044e","\u042e"],[".",","],["Shift","Shift"]],[[" "," "]]],lang:["uz"]};this.VKI_layout["\u4e2d\u6587\u6ce8\u97f3\u7b26\u53f7"]={name:"Chinese Bopomofo IME",keys:[[["\u20ac","~"],["\u3105","!"],["\u3109","@"],["\u02c7","#"],["\u02cb","$"],["\u3113","%"],["\u02ca","^"],["\u02d9","&"],["\u311a","*"],["\u311e",")"],["\u3122","("],["\u3126","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u3106","q"],["\u310a","w"],["\u310d","e"],
249
+ ["\u3110","r"],["\u3114","t"],["\u3117","y"],["\u3127","u"],["\u311b","i"],["\u311f","o"],["\u3123","p"],["[","{"],["]","}"],["\\","|"]],[["Caps","Caps"],["\u3107","a"],["\u310b","s"],["\u310e","d"],["\u3111","f"],["\u3115","g"],["\u3118","h"],["\u3128","j"],["\u311c","k"],["\u3120","l"],["\u3124",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\u3108","z"],["\u310c","x"],["\u310f","c"],["\u3112","v"],["\u3116","b"],["\u3119","n"],["\u3129","m"],["\u311d","<"],["\u3121",">"],["\u3125","?"],
250
+ ["Shift","Shift"]],[[" "," "]]],lang:["zh-Bopo"]};this.VKI_layout["\u4e2d\u6587\u4ed3\u9889\u8f93\u5165\u6cd5"]={name:"Chinese Cangjie IME",keys:[[["\u20ac","~"],["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9",")"],["0","("],["-","_"],["=","+"],["Bksp","Bksp"]],[["Tab","Tab"],["\u624b","q"],["\u7530","w"],["\u6c34","e"],["\u53e3","r"],["\u5eff","t"],["\u535c","y"],["\u5c71","u"],["\u6208","i"],["\u4eba","o"],["\u5fc3","p"],["[","{"],["]","}"],["\\","|"]],[["Caps",
251
+ "Caps"],["\u65e5","a"],["\u5c38","s"],["\u6728","d"],["\u706b","f"],["\u571f","g"],["\u7af9","h"],["\u5341","j"],["\u5927","k"],["\u4e2d","l"],[";",":"],["'",'"'],["Enter","Enter"]],[["Shift","Shift"],["\uff3a","z"],["\u96e3","x"],["\u91d1","c"],["\u5973","v"],["\u6708","b"],["\u5f13","n"],["\u4e00","m"],[",","<"],[".",">"],["/","?"],["Shift","Shift"]],[[" "," "]]],lang:["zh"]};this.VKI_deadkey={};this.VKI_deadkey['"']=this.VKI_deadkey["\u00a8"]=this.VKI_deadkey["\u309b"]={a:"\u00e4",e:"\u00eb",i:"\u00ef",
252
+ o:"\u00f6",u:"\u00fc",y:"\u00ff","\u03b9":"\u03ca","\u03c5":"\u03cb","\u016b":"\u01d6","\u00fa":"\u01d8","\u01d4":"\u01da","\u00f9":"\u01dc",A:"\u00c4",E:"\u00cb",I:"\u00cf",O:"\u00d6",U:"\u00dc",Y:"\u0178","\u0399":"\u03aa","\u03a5":"\u03ab","\u016a":"\u01d5","\u00da":"\u01d7","\u01d3":"\u01d9","\u00d9":"\u01db","\u304b":"\u304c","\u304d":"\u304e","\u304f":"\u3050","\u3051":"\u3052","\u3053":"\u3054","\u305f":"\u3060","\u3061":"\u3062","\u3064":"\u3065","\u3066":"\u3067","\u3068":"\u3069","\u3055":"\u3056",
253
+ "\u3057":"\u3058","\u3059":"\u305a","\u305b":"\u305c","\u305d":"\u305e","\u306f":"\u3070","\u3072":"\u3073","\u3075":"\u3076","\u3078":"\u3079","\u307b":"\u307c","\u30ab":"\u30ac","\u30ad":"\u30ae","\u30af":"\u30b0","\u30b1":"\u30b2","\u30b3":"\u30b4","\u30bf":"\u30c0","\u30c1":"\u30c2","\u30c4":"\u30c5","\u30c6":"\u30c7","\u30c8":"\u30c9","\u30b5":"\u30b6","\u30b7":"\u30b8","\u30b9":"\u30ba","\u30bb":"\u30bc","\u30bd":"\u30be","\u30cf":"\u30d0","\u30d2":"\u30d3","\u30d5":"\u30d6","\u30d8":"\u30d9",
254
+ "\u30db":"\u30dc"};this.VKI_deadkey["~"]={a:"\u00e3",l:"\u0142",n:"\u00f1",o:"\u00f5",A:"\u00c3",L:"\u0141",N:"\u00d1",O:"\u00d5"};this.VKI_deadkey["^"]={a:"\u00e2",e:"\u00ea",i:"\u00ee",o:"\u00f4",u:"\u00fb",w:"\u0175",y:"\u0177",A:"\u00c2",E:"\u00ca",I:"\u00ce",O:"\u00d4",U:"\u00db",W:"\u0174",Y:"\u0176"};this.VKI_deadkey["\u02c7"]={c:"\u010d",d:"\u010f",e:"\u011b",s:"\u0161",l:"\u013e",n:"\u0148",r:"\u0159",t:"\u0165",u:"\u01d4",z:"\u017e","\u00fc":"\u01da",C:"\u010c",D:"\u010e",E:"\u011a",S:"\u0160",
255
+ L:"\u013d",N:"\u0147",R:"\u0158",T:"\u0164",U:"\u01d3",Z:"\u017d","\u00dc":"\u01d9"};this.VKI_deadkey["\u02d8"]={a:"\u0103",g:"\u011f",A:"\u0102",G:"\u011e"};this.VKI_deadkey["-"]=this.VKI_deadkey["\u00af"]={a:"\u0101",e:"\u0113",i:"\u012b",o:"\u014d",u:"\u016b",y:"\u0233","\u00fc":"\u01d6",A:"\u0100",E:"\u0112",I:"\u012a",O:"\u014c",U:"\u016a",Y:"\u0232","\u00dc":"\u01d5"};this.VKI_deadkey["`"]={a:"\u00e0",e:"\u00e8",i:"\u00ec",o:"\u00f2",u:"\u00f9","\u00fc":"\u01dc",A:"\u00c0",E:"\u00c8",I:"\u00cc",
256
+ O:"\u00d2",U:"\u00d9","\u00dc":"\u01db"};this.VKI_deadkey["'"]=this.VKI_deadkey["\u00b4"]=this.VKI_deadkey["\u0384"]={a:"\u00e1",e:"\u00e9",i:"\u00ed",o:"\u00f3",u:"\u00fa",y:"\u00fd","\u03b1":"\u03ac","\u03b5":"\u03ad","\u03b7":"\u03ae","\u03b9":"\u03af","\u03bf":"\u03cc","\u03c5":"\u03cd","\u03c9":"\u03ce","\u00fc":"\u01d8",A:"\u00c1",E:"\u00c9",I:"\u00cd",O:"\u00d3",U:"\u00da",Y:"\u00dd","\u0391":"\u0386","\u0395":"\u0388","\u0397":"\u0389","\u0399":"\u038a","\u039f":"\u038c","\u03a5":"\u038e",
257
+ "\u03a9":"\u038f","\u00dc":"\u01d7"};this.VKI_deadkey["\u02dd"]={o:"\u0151",u:"\u0171",O:"\u0150",U:"\u0170"};this.VKI_deadkey["\u0385"]={"\u03b9":"\u0390","\u03c5":"\u03b0"};this.VKI_deadkey["\u00b0"]=this.VKI_deadkey["\u00ba"]={a:"\u00e5",u:"\u016f",A:"\u00c5",U:"\u016e"};this.VKI_deadkey["\u02db"]={a:"\u0106",e:"\u0119",i:"\u012f",o:"\u01eb",u:"\u0173",y:"\u0177",A:"\u0105",E:"\u0118",I:"\u012e",O:"\u01ea",U:"\u0172",Y:"\u0176"};this.VKI_deadkey["\u02d9"]={c:"\u010b",e:"\u0117",g:"\u0121",z:"\u017c",
258
+ C:"\u010a",E:"\u0116",G:"\u0120",Z:"\u017b"};this.VKI_deadkey["\u00b8"]=this.VKI_deadkey["\u201a"]={c:"\u00e7",s:"\u015f",C:"\u00c7",S:"\u015e"};this.VKI_deadkey[","]={s:this.VKI_isIElt8?"\u015f":"\u0219",t:this.VKI_isIElt8?"\u0163":"\u021b",S:this.VKI_isIElt8?"\u015e":"\u0218",T:this.VKI_isIElt8?"\u0162":"\u021a"};this.VKI_deadkey["\u3002"]={"\u306f":"\u3071","\u3072":"\u3074","\u3075":"\u3077","\u3078":"\u307a","\u307b":"\u307d","\u30cf":"\u30d1","\u30d2":"\u30d4","\u30d5":"\u30d7","\u30d8":"\u30da",
259
+ "\u30db":"\u30dd"};this.VKI_symbol={"\u00a0":"NB\nSP","\u200b":"ZW\nSP","\u200c":"ZW\nNJ","\u200d":"ZW\nJ"};this.VKI_numpad=[[["$"],["\u00a3"],["\u20ac"],["\u00a5"]],[["7"],["8"],["9"],["/"]],[["4"],["5"],["6"],["*"]],[["1"],["2"],["3"],["-"]],[["0"],["."],["="],["+"]]];this.VKI_attachKeyboard=VKI_attach=function(b){if(b.getAttribute("VKI_attached"))return false;if(this.VKI_imageURI){var c=document.createElement("img");c.src=this.VKI_imageURI;c.alt=this.VKI_i18n["00"];c.className="keyboardInputInitiator";
260
+ c.title=this.VKI_i18n["01"];c.elem=b;c.onclick=function(d){d=d||event;if(d.stopPropagation)d.stopPropagation();else d.cancelBubble=true;a.VKI_show(this.elem)};b.parentNode.insertBefore(c,b.dir=="rtl"?b:b.nextSibling)}else b.onfocus=function(){a.VKI_target!=this&&a.VKI_show(this)};b.setAttribute("VKI_attached","true");if(this.VKI_isIE)b.onclick=b.onselect=b.onkeyup=function(d){if((d||event).type!="keyup"||!this.readOnly)this.range=document.selection.createRange()};g(b,"click",function(d){if(a.VKI_target==
261
+ this){d=d||event;if(d.stopPropagation)d.stopPropagation();else d.cancelBubble=true}return false},false);this.VKI_isMoz&&b.addEventListener("blur",function(){this.setAttribute("_scrollTop",this.scrollTop)},false)};this.VKI_keyboard=document.createElement("table");this.VKI_keyboard.id="keyboardInputMaster";this.VKI_keyboard.dir="ltr";this.VKI_keyboard.cellSpacing="0";this.VKI_keyboard.reflow=function(){this.style.width="50px";this.style.width=""};g(this.VKI_keyboard,"click",function(b){b=b||event;if(b.stopPropagation)b.stopPropagation();
262
+ else b.cancelBubble=true;return false},false);if(!this.VKI_layout[this.VKI_kt])return alert('No keyboard named "'+this.VKI_kt+'"');this.VKI_langCode={};var x=document.createElement("thead"),v=document.createElement("tr"),n=document.createElement("th");n.colSpan="2";var r=document.createElement("div");r.title=this.VKI_i18n["02"];g(r,"click",function(){var b=this.getElementsByTagName("ol")[0];if(b.style.display)b.style.display="";else{b.style.display="block";for(var c=b.getElementsByTagName("li"),d=
263
+ 0,i=0;d<c.length;d++)if(VKI_kt==c[d].firstChild.nodeValue){c[d].className="selected";i=c[d].offsetTop-c[d].offsetHeight*2}else c[d].className="";setTimeout(function(){b.scrollTop=i},0)}},false);r.appendChild(document.createTextNode(this.VKI_kt));r.appendChild(document.createTextNode(this.VKI_isIElt8?" \u2193":" \u25be"));var p=document.createElement("ol");for(ktype in this.VKI_layout)if(typeof this.VKI_layout[ktype]=="object"){if(!this.VKI_layout[ktype].lang)this.VKI_layout[ktype].lang=[];for(var f=
264
+ 0;f<this.VKI_layout[ktype].lang.length;f++)this.VKI_langCode[this.VKI_layout[ktype].lang[f].toLowerCase().replace(/-/g,"_")]=ktype;f=document.createElement("li");f.title=this.VKI_layout[ktype].name;g(f,"click",function(b){b=b||event;if(b.stopPropagation)b.stopPropagation();else b.cancelBubble=true;this.parentNode.style.display="";a.VKI_kts=a.VKI_kt=r.firstChild.nodeValue=this.firstChild.nodeValue;a.VKI_buildKeys();a.VKI_position(true)},false);u(f);f.appendChild(document.createTextNode(ktype));p.appendChild(f)}r.appendChild(p);
265
+ n.appendChild(r);this.VKI_langCode.index=[];for(prop in this.VKI_langCode)prop!="index"&&typeof this.VKI_langCode[prop]=="string"&&this.VKI_langCode.index.push(prop);this.VKI_langCode.index.sort();this.VKI_langCode.index.reverse();if(this.VKI_numberPad){f=document.createElement("span");f.appendChild(document.createTextNode("#"));f.title=this.VKI_i18n["00"];g(f,"click",function(){w.style.display=!w.style.display?"none":"";a.VKI_position(true)},false);u(f);n.appendChild(f)}this.VKI_kbsize=function(){a.VKI_size=
266
+ Math.min(5,Math.max(1,a.VKI_size));a.VKI_keyboard.className=a.VKI_keyboard.className.replace(/ ?keyboardInputSize\d ?/,"");if(a.VKI_size!=2)a.VKI_keyboard.className+=" keyboardInputSize"+a.VKI_size;a.VKI_position(true);a.VKI_isOpera&&a.VKI_keyboard.reflow()};if(this.VKI_sizeAdj){f=document.createElement("small");f.title=this.VKI_i18n["10"];g(f,"click",function(){--a.VKI_size;a.VKI_kbsize()},false);u(f);f.appendChild(document.createTextNode(this.VKI_isIElt8?"\u2193":"\u21d3"));n.appendChild(f);f=document.createElement("big");
267
+ f.title=this.VKI_i18n["11"];g(f,"click",function(){++a.VKI_size;a.VKI_kbsize()},false);u(f);f.appendChild(document.createTextNode(this.VKI_isIElt8?"\u2191":"\u21d1"));n.appendChild(f)}f=document.createElement("strong");f.appendChild(document.createTextNode("X"));f.title=this.VKI_i18n["06"];g(f,"click",function(){a.VKI_close()},false);u(f);n.appendChild(f);v.appendChild(n);x.appendChild(v);this.VKI_keyboard.appendChild(x);x=document.createElement("tbody");v=document.createElement("tr");f=document.createElement("td");
268
+ n=document.createElement("div");if(this.VKI_deadBox){p=document.createElement("label");var s=document.createElement("input");s.type="checkbox";s.title=this.VKI_i18n["03"]+": "+(this.VKI_deadkeysOn?this.VKI_i18n["04"]:this.VKI_i18n["05"]);s.defaultChecked=this.VKI_deadkeysOn;g(s,"click",function(){this.title=a.VKI_i18n["03"]+": "+(this.checked?a.VKI_i18n["04"]:a.VKI_i18n["05"]);a.VKI_modify("");return true},false);p.appendChild(s);s.checked=this.VKI_deadkeysOn;n.appendChild(p);this.VKI_deadkeysOn=
269
+ s}else this.VKI_deadkeysOn.checked=this.VKI_deadkeysOn;if(this.VKI_showVersion){p=document.createElement("var");p.title=this.VKI_i18n["09"]+" "+this.VKI_version;p.appendChild(document.createTextNode("v"+this.VKI_version));n.appendChild(p)}f.appendChild(n);v.appendChild(f);var w=document.createElement("td");w.id="keyboardInputNumpad";if(!this.VKI_numberPadOn)w.style.display="none";n=document.createElement("table");n.cellSpacing="0";p=document.createElement("tbody");for(f=0;f<this.VKI_numpad.length;f++){s=
270
+ document.createElement("tr");for(var B=0;B<this.VKI_numpad[f].length;B++){var y=document.createElement("td");g(y,"click",D,false);u(y);y.appendChild(document.createTextNode(this.VKI_numpad[f][B]));s.appendChild(y)}p.appendChild(s)}n.appendChild(p);w.appendChild(n);v.appendChild(w);x.appendChild(v);this.VKI_keyboard.appendChild(x);if(this.VKI_isIE6){this.VKI_iframe=document.createElement("iframe");this.VKI_iframe.style.position="absolute";this.VKI_iframe.style.border="0px none";this.VKI_iframe.style.filter=
271
+ "mask()";this.VKI_iframe.style.zIndex="999999";this.VKI_iframe.src=this.VKI_imageURI}this.VKI_buildKeys=function(){this.VKI_shift=this.VKI_shiftlock=this.VKI_altgr=this.VKI_altgrlock=this.VKI_dead=false;for(var b=this.VKI_keyboard.tBodies[0].getElementsByTagName("div")[0],c=b.getElementsByTagName("table"),d=c.length-1;d>=0;d--)b.removeChild(c[d]);d=0;c=false;for(var i;i=this.VKI_layout[this.VKI_kt].keys[d++];){var e=document.createElement("table");e.cellSpacing="0";if(i.length<=this.VKI_keyCenter)e.className=
272
+ "keyboardInputCenter";for(var l=document.createElement("tbody"),j=document.createElement("tr"),m=0,h;h=i[m++];){var k=document.createElement("td");if(this.VKI_symbol[h[0]]){var q=this.VKI_symbol[h[0]].split("\n"),z=document.createElement("small");z.setAttribute("char",h[0]);for(var t=0;t<q.length;t++){t&&z.appendChild(document.createElement("br"));z.appendChild(document.createTextNode(q[t]))}k.appendChild(z)}else k.appendChild(document.createTextNode(h[0]||"\u00a0"));q=[];if(this.VKI_deadkeysOn.checked)for(key in this.VKI_deadkey)if(key===
273
+ h[0]){q.push("deadkey");break}i.length>this.VKI_keyCenter&&m==i.length&&q.push("last");if(h[0]==" "||h[1]==" ")q.push("space");k.className=q.join(" ");switch(h[1]){case "Caps":case "Shift":case "Alt":case "AltGr":case "AltLk":g(k,"click",function(o){return function(){a.VKI_modify(o);return false}}(h[1]),false);break;case "Tab":g(k,"click",function(){a.VKI_insert("\t");return false},false);break;case "Bksp":g(k,"click",function(){a.VKI_target.focus();if(a.VKI_target.setSelectionRange&&!a.VKI_target.readOnly){var o=
274
+ [a.VKI_target.selectionStart,a.VKI_target.selectionEnd];o[0]<o[1]&&o[0]++;a.VKI_target.value=a.VKI_target.value.substr(0,o[0]-1)+a.VKI_target.value.substr(o[1]);a.VKI_target.setSelectionRange(o[0]-1,o[0]-1)}else if(a.VKI_target.createTextRange&&!a.VKI_target.readOnly){try{a.VKI_target.range.select()}catch(C){a.VKI_target.range=document.selection.createRange()}a.VKI_target.range.text.length||a.VKI_target.range.moveStart("character",-1);a.VKI_target.range.text=""}else a.VKI_target.value=a.VKI_target.value.substr(0,
275
+ a.VKI_target.value.length-1);jQuery(a.VKI_target).keyup();a.VKI_shift&&a.VKI_modify("Shift");a.VKI_altgr&&a.VKI_modify("AltGr");a.VKI_target.focus();return true},false);break;case "Enter":g(k,"click",function(){if(a.VKI_target.nodeName!="TEXTAREA"){if(a.VKI_target.form){for(var o=0,C=false;o<a.VKI_target.form.elements.length;o++)if(a.VKI_target.form.elements[o].type=="submit")C=true;C||a.VKI_target.form.submit()}a.VKI_close()}else a.VKI_insert("\n");return true},false);break;default:g(k,"click",D,
276
+ false)}u(k);j.appendChild(k);for(t=0;t<4;t++)if(this.VKI_deadkey[h[t]=h[t]||""])c=true}l.appendChild(j);e.appendChild(l);b.appendChild(e)}if(this.VKI_deadBox)this.VKI_deadkeysOn.style.display=c?"inline":"none";if(this.VKI_isIE6){this.VKI_iframe.style.width=this.VKI_keyboard.offsetWidth+"px";this.VKI_iframe.style.height=this.VKI_keyboard.offsetHeight+"px"}};this.VKI_buildKeys();g(this.VKI_keyboard,"selectstart",function(){return false},false);this.VKI_keyboard.unselectable="on";this.VKI_isOpera&&g(this.VKI_keyboard,
277
+ "mousedown",function(){return false},false);this.VKI_modify=function(b){switch(b){case "Alt":case "AltGr":this.VKI_altgr=!this.VKI_altgr;break;case "AltLk":this.VKI_altgr=0;this.VKI_altgrlock=!this.VKI_altgrlock;break;case "Caps":this.VKI_shift=0;this.VKI_shiftlock=!this.VKI_shiftlock;break;case "Shift":this.VKI_shift=!this.VKI_shift}var c=0;if(!this.VKI_shift!=!this.VKI_shiftlock)c+=1;if(!this.VKI_altgr!=!this.VKI_altgrlock)c+=2;for(var d=this.VKI_keyboard.tBodies[0].getElementsByTagName("div")[0].getElementsByTagName("table"),
278
+ i=0;i<d.length;i++)for(var e=d[i].getElementsByTagName("td"),l=0;l<e.length;l++){var j=[],m=this.VKI_layout[this.VKI_kt].keys[i][l];switch(m[1]){case "Alt":case "AltGr":this.VKI_altgr&&j.push("pressed");break;case "AltLk":this.VKI_altgrlock&&j.push("pressed");break;case "Shift":this.VKI_shift&&j.push("pressed");break;case "Caps":this.VKI_shiftlock&&j.push("pressed");break;case "Tab":case "Enter":case "Bksp":break;default:if(b){e[l].removeChild(e[l].firstChild);if(this.VKI_symbol[m[c]]){var h=this.VKI_symbol[m[c]].split("\n"),
279
+ k=document.createElement("small");k.setAttribute("char",m[c]);for(var q=0;q<h.length;q++){q&&k.appendChild(document.createElement("br"));k.appendChild(document.createTextNode(h[q]))}e[l].appendChild(k)}else e[l].appendChild(document.createTextNode(m[c]||"\u00a0"))}if(this.VKI_deadkeysOn.checked){h=e[l].firstChild.nodeValue||e[l].firstChild.className;if(this.VKI_dead){h==this.VKI_dead&&j.push("pressed");this.VKI_deadkey[this.VKI_dead][h]&&j.push("target")}this.VKI_deadkey[h]&&j.push("deadkey")}}l==
280
+ e.length-1&&e.length>this.VKI_keyCenter&&j.push("last");if(m[0]==" "||m[1]==" ")j.push("space");e[l].className=j.join(" ")}};this.VKI_insert=function(b){this.VKI_target.focus();if(this.VKI_target.maxLength)this.VKI_target.maxlength=this.VKI_target.maxLength;if(typeof this.VKI_target.maxlength=="undefined"||this.VKI_target.maxlength<0||this.VKI_target.value.length<this.VKI_target.maxlength){if(this.VKI_target.setSelectionRange&&!this.VKI_target.readOnly){var c=[this.VKI_target.selectionStart,this.VKI_target.selectionEnd];
281
+ this.VKI_target.value=this.VKI_target.value.substr(0,c[0])+b+this.VKI_target.value.substr(c[1]);b=="\n"&&this.VKI_isOpera&&c[0]++;this.VKI_target.setSelectionRange(c[0]+b.length,c[0]+b.length)}else if(this.VKI_target.createTextRange&&!this.VKI_target.readOnly){try{this.VKI_target.range.select()}catch(d){this.VKI_target.range=document.selection.createRange()}this.VKI_target.range.text=b;this.VKI_target.range.collapse(true);this.VKI_target.range.select()}else this.VKI_target.value+=b;this.VKI_shift&&
282
+ this.VKI_modify("Shift");this.VKI_altgr&&this.VKI_modify("AltGr");this.VKI_target.focus();jQuery(this.VKI_target).keyup()}else this.VKI_target.createTextRange&&this.VKI_target.range&&this.VKI_target.range.select()};this.VKI_show=function(b){if(this.VKI_target)this.VKI_close();else{this.VKI_target=b;if(this.VKI_langAdapt&&this.VKI_target.lang){b=false;var c=this.VKI_target.lang.toLowerCase().replace(/-/g,"_"),d=0;for(b=false;!b&&d<this.VKI_langCode.index.length;d++)if(c.indexOf(this.VKI_langCode.index[d])==
283
+ 0)b=r.firstChild.nodeValue=this.VKI_kt=this.VKI_langCode[this.VKI_langCode.index[d]];b&&this.VKI_buildKeys()}if(this.VKI_isIE){if(!this.VKI_target.range){this.VKI_target.range=this.VKI_target.createTextRange();this.VKI_target.range.moveStart("character",this.VKI_target.value.length)}this.VKI_target.range.select()}try{this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard)}catch(i){}if(this.VKI_clearPasswords&&this.VKI_target.type=="password")this.VKI_target.value="";b=this.VKI_target;this.VKI_target.keyboardPosition=
284
+ "absolute";do{if(b.currentStyle)var e=b.currentStyle.position;else if(window.getComputedStyle)e=window.getComputedStyle(b,null).position;if(e=="fixed"){this.VKI_target.keyboardPosition="fixed";break}}while(b=b.offsetParent);this.VKI_isIE6&&document.body.appendChild(this.VKI_iframe);document.body.appendChild(this.VKI_keyboard);this.VKI_keyboard.style.position=this.VKI_target.keyboardPosition;this.VKI_isOpera&&this.VKI_keyboard.reflow();this.VKI_position(true);if(a.VKI_isMoz||a.VKI_isWebKit)this.VKI_position(true);
285
+ this.VKI_target.blur();this.VKI_target.focus()}};this.VKI_position=function(b){if(a.VKI_target){var c=A(a.VKI_keyboard),d=E(),i=F(),e=false,l=a.VKI_target.offsetHeight+3;if(b!==true)if(c[1]+a.VKI_keyboard.offsetHeight-i[1]-d[1]>0){e=true;l=-a.VKI_keyboard.offsetHeight-3}else if(c[1]-i[1]<0)e=true;if(e||b===true){c=A(a.VKI_target);for(e=a.VKI_target;e=e.parentNode;){if(e==document.body)break;if(e.scrollHeight>e.offsetHeight||e.scrollWidth>e.offsetWidth){if(!e.getAttribute("VKI_scrollListener")){e.setAttribute("VKI_scrollListener",
286
+ true);g(e,"scroll",function(){a.VKI_position(true)},false)}var j=A(e),m=c[1]-j[1],h=c[0]-j[0];j=m+a.VKI_target.offsetHeight;var k=h+a.VKI_target.offsetWidth;m=e.offsetHeight-m-a.VKI_target.offsetHeight;h=e.offsetWidth-h-a.VKI_target.offsetWidth;a.VKI_keyboard.style.display=j<0||k<0||m<0||h<0?"none":"";if(a.VKI_isIE6)a.VKI_iframe.style.display=j<0||k<0||m<0||h<0?"none":""}}a.VKI_keyboard.style.top=c[1]-(a.VKI_target.keyboardPosition=="fixed"&&!a.VKI_isIE&&!a.VKI_isMoz?i[1]:0)+l+"px";a.VKI_keyboard.style.left=
287
+ Math.max(10,Math.min(d[0]-a.VKI_keyboard.offsetWidth-25,c[0]))+"px";if(a.VKI_isIE6){a.VKI_iframe.style.width=a.VKI_keyboard.offsetWidth+"px";a.VKI_iframe.style.height=a.VKI_keyboard.offsetHeight+"px";a.VKI_iframe.style.top=a.VKI_keyboard.style.top;a.VKI_iframe.style.left=a.VKI_keyboard.style.left}}b===true&&a.VKI_position()}};this.VKI_close=VKI_close=function(){if(this.VKI_target){try{this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard);this.VKI_isIE6&&this.VKI_iframe.parentNode.removeChild(this.VKI_iframe)}catch(b){}if(this.VKI_kt!=
288
+ this.VKI_kts){r.firstChild.nodeValue=this.VKI_kt=this.VKI_kts;this.VKI_buildKeys()}r.getElementsByTagName("ol")[0].style.display="";this.VKI_target.focus();if(this.VKI_isIE)setTimeout(function(){a.VKI_target=false},0);else this.VKI_target=false}};g(window,"resize",this.VKI_position,false);g(window,"scroll",this.VKI_position,false);this.VKI_kbsize();g(window,"load",function(){for(var b=[document.getElementsByTagName("input"),document.getElementsByTagName("textarea")],c=0,d;d=b[c++];)for(var i=0,e;e=
289
+ d[i++];)if((e.nodeName=="TEXTAREA"||e.type=="text"||e.type=="password")&&e.className.indexOf("keyboardInput")>-1)a.VKI_attachKeyboard(e);g(document.documentElement,"click",function(){a.VKI_close()},false)},false)})();
js/l/es.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Transposh v0.7.0
3
+ * http://transposh.org/
4
+ *
5
+ * Copyright 2011, Team Transposh
6
+ * Licensed under the GPL Version 2 or higher.
7
+ * http://transposh.org/license
8
+ *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
+ */
11
+ t_jp.l={"Close without saving?":"Cerrar sin guardar?","You have made a change to the translation. Are you sure you want to discard it?":"Has cambiado la traducion. Estas seguro que lo quieres eliminar?",History:"Historia","Loading...":"Cargando...",Translated:"Traducido",By:"Por",At:"En",google:"google",bing:"bing",apertium:"apertium","manual translation":"traducci\u00f3n manual","bing suggest":"sugerencia de bing","google suggest":"sugerencia de google","apertium suggest":"sugerencia de apertium",
12
+ "Edit Translation":"Editar traducci\u00f3n","Original text":"Texto original","read alternate translations":"lee traducci\u00f3nes alternativas","previous translation":"traducci\u00f3n anterior","find on page":"encuentra en la pagina","next translation":"siguiente traducci\u00f3n","Translate to":"Traducir a","view translation log":"muestra diario de traducion","virtual keyboard":"teclado virtual","approve translation":"aprueba traducion","delete":"eliminar",Discard:"Descartar",Cancel:"Cancelar"};
js/l/he.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Transposh v0.7.0
3
+ * http://transposh.org/
4
+ *
5
+ * Copyright 2011, Team Transposh
6
+ * Licensed under the GPL Version 2 or higher.
7
+ * http://transposh.org/license
8
+ *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
+ */
11
+ t_jp.l={"Close without saving?":"\u05dc\u05e1\u05d2\u05d5\u05e8 \u05d1\u05dc\u05d9 \u05dc\u05e9\u05de\u05d5\u05e8?","You have made a change to the translation. Are you sure you want to discard it?":"\u05d1\u05d9\u05e6\u05e2\u05ea \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05ea\u05e8\u05d2\u05d5\u05dd, \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05e8\u05d5\u05e6\u05d4 \u05dc\u05d5\u05d5\u05ea\u05e8 \u05e2\u05dc\u05d9\u05d5?",History:"\u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d4",
12
+ "Loading...":"\u05d8\u05d5\u05e2\u05df...",Translated:"\u05ea\u05d5\u05e8\u05d2\u05dd",By:"\u05e2\u05dc \u05d9\u05d3\u05d9",At:"\u05d1",google:"\u05d2\u05d5\u05d2\u05dc",bing:"\u05d1\u05d9\u05e0\u05d2",apertium:"\u05d0\u05e4\u05e8\u05d8\u05d9\u05d5\u05dd","manual translation":"\u05ea\u05e8\u05d2\u05d5\u05dd \u05d9\u05d3\u05e0\u05d9","bing suggest":"\u05d4\u05e6\u05e2\u05d5\u05ea \u05d1\u05d9\u05e0\u05d2","google suggest":"\u05d4\u05e6\u05e2\u05d5\u05ea \u05d2\u05d5\u05d2\u05dc","apertium suggest":"\u05d4\u05e6\u05e2\u05d5\u05ea \u05d0\u05e4\u05e8\u05d8\u05d9\u05d5\u05dd",
13
+ "Edit Translation":"\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05e8\u05d2\u05d5\u05dd","Original text":"\u05d8\u05e7\u05e1\u05d8 \u05de\u05e7\u05d5\u05e8\u05d9","read alternate translations":"\u05e7\u05e8\u05d0 \u05ea\u05e8\u05d2\u05d5\u05de\u05d9\u05dd \u05d0\u05dc\u05d8\u05e8\u05e0\u05d8\u05d9\u05d1\u05d9\u05d9\u05dd","previous translation":"\u05ea\u05e8\u05d2\u05d5\u05dd \u05e7\u05d5\u05d3\u05dd","find on page":"\u05de\u05e6\u05d0 \u05d1\u05d3\u05e3","next translation":"\u05ea\u05e8\u05d2\u05d5\u05dd \u05d4\u05d1\u05d0",
14
+ "Translate to":"\u05ea\u05e8\u05d2\u05dd \u05dc","view translation log":"\u05d4\u05e6\u05d2 \u05dc\u05d5\u05d2 \u05ea\u05e8\u05d2\u05d5\u05dd","virtual keyboard":"\u05de\u05e7\u05dc\u05d3\u05ea \u05d5\u05d9\u05e8\u05d8\u05d5\u05d0\u05dc\u05d9\u05ea","approve translation":"\u05d0\u05e9\u05e8 \u05ea\u05e8\u05d2\u05d5\u05dd","delete":"\u05de\u05d7\u05e7",Discard:"\u05d5\u05d5\u05ea\u05e8",Cancel:"\u05d1\u05d8\u05dc"};
js/lazy.js CHANGED
@@ -1,12 +1,15 @@
1
  /*
2
- * Transposh v0.6.7
3
- * http://transposh.org/
 
4
  *
5
- * Copyright 2010, Team Transposh
6
- * Licensed under the GPL Version 2 or higher.
7
- * http://transposh.org/license
8
  *
9
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
 
 
 
10
  */
11
  (function(b){function s(){function h(a,c){t[a](c,function(d){d=="error"?i.push(c):k.push(c)&&g.each(c);o()},"lazy-loaded-"+(g.name?g.name:(new Date).getTime()))}function j(a){g.complete(a,k,i);g[a](a=="error"?i:k);clearTimeout(p);clearTimeout(u)}function o(){if(k.length==l.length)j("success");else k.length+i.length==l.length&&j("error")}function q(){i.push(this.src);o()}var t=this,g,k=[],i=[],p,u,n,l=[];this.init=function(a){if(a){g=b.extend({},b.xLazyLoader.defaults,a);n={js:g.js,css:g.css,img:g.img};
12
  b.each(n,function(c,d){if(typeof d=="string")d=d.split(",");l=l.concat(d)});if(l.length){if(g.timeout)p=setTimeout(function(){var c=k.concat(i);b.each(l,function(d,f){b.inArray(f,c)==-1&&i.push(f)});j("error")},g.timeout);b.each(n,function(c,d){if(b.isArray(d))b.each(d,function(f,e){h(c,e)});else typeof d=="string"&&h(c,d)})}else j("error")}};this.js=function(a,c,d){var f=b('script[src*="'+a+'"]');if(f.length)f.attr("pending")?f.bind("scriptload",c):c();else{var e=document.createElement("script");
1
  /*
2
+ * xLazyLoader 1.3 - Plugin for jQuery
3
+ *
4
+ * Load js, css and images asynchron and get different callbacks
5
  *
6
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
7
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 
8
  *
9
+ * Depends:
10
+ * jquery.js
11
+ *
12
+ * Copyright (c) 2008 Oleg Slobodskoi (ajaxsoft.de)
13
  */
14
  (function(b){function s(){function h(a,c){t[a](c,function(d){d=="error"?i.push(c):k.push(c)&&g.each(c);o()},"lazy-loaded-"+(g.name?g.name:(new Date).getTime()))}function j(a){g.complete(a,k,i);g[a](a=="error"?i:k);clearTimeout(p);clearTimeout(u)}function o(){if(k.length==l.length)j("success");else k.length+i.length==l.length&&j("error")}function q(){i.push(this.src);o()}var t=this,g,k=[],i=[],p,u,n,l=[];this.init=function(a){if(a){g=b.extend({},b.xLazyLoader.defaults,a);n={js:g.js,css:g.css,img:g.img};
15
  b.each(n,function(c,d){if(typeof d=="string")d=d.split(",");l=l.concat(d)});if(l.length){if(g.timeout)p=setTimeout(function(){var c=k.concat(i);b.each(l,function(d,f){b.inArray(f,c)==-1&&i.push(f)});j("error")},g.timeout);b.each(n,function(c,d){if(b.isArray(d))b.each(d,function(f,e){h(c,e)});else typeof d=="string"&&h(c,d)})}else j("error")}};this.js=function(a,c,d){var f=b('script[src*="'+a+'"]');if(f.length)f.attr("pending")?f.bind("scriptload",c):c();else{var e=document.createElement("script");
js/transposh.js CHANGED
@@ -1,18 +1,19 @@
1
  /*
2
- * Transposh v0.6.7
3
  * http://transposh.org/
4
  *
5
- * Copyright 2010, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
10
  */
11
- (function(a){function v(b,e){if(a.trim(e).length!==0){var d=function(){var c=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),f=a("#"+h+"img_"+c);a("#"+h+c).attr("data-source",1);f.removeClass("tr-icon-yellow").removeClass("tr-icon-green").addClass("tr-icon-yellow")};a("*[data-token='"+b+"'][data-hidden!='y']").html(e).each(d);a("*[data-token='"+b+"'][data-hidden='y']").attr("data-trans",e).each(d)}}function w(b,e){clearTimeout(o);i.push(b);n.push(e);v(b,e);o=setTimeout(function(){var d=
12
- {ln0:t_jp.lang,sr0:p,translation_posted:"2",items:i.length},c;for(c=0;c<i.length;c+=1){d["tk"+c]=i[c];d["tr"+c]=n[c];q+=a("*[data-token='"+i[c]+"']").size()}a.ajax({type:"POST",url:t_jp.post_url,data:d,success:function(){var f=q/j*100;t_jp.progress&&a("#"+k).progressbar("value",f)}});n=[];i=[]},200)}function l(b,e){w(b,a("<div>"+a.trim(e)+"</div>").text());var d=(j-a("."+h+'[data-source=""]').size())/j*100;t_jp.progress&&a("#"+m).progressbar("value",d)}function x(b,e,d){var c="",f="";a(b).each(function(g){c+=
13
- "&q="+encodeURIComponent(b[g])});if(e)f=t_jp.olang;a.ajax({url:"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0"+c+"&langpair="+f+"%7C"+t_jp.lang,dataType:"jsonp",success:d})}function r(b,e,d){x(e,d,function(c){if(c.responseStatus>=200&&c.responseStatus<300)c.responseData.translatedText!==undefined?l(b[0],c.responseData.translatedText):a(c.responseData).each(function(f){this.responseStatus===200&&l(b[f],this.responseData.translatedText)});else c.responseStatus>=400&&!d&&r(b,e,true)})}
14
- function y(b,e){var d="[";a(b).each(function(c){d+='"'+encodeURIComponent(b[c])+'",'});d=d.slice(0,-1)+"]";a.ajax({url:"http://api.microsofttranslator.com/V2/Ajax.svc/TranslateArray?appId="+t_jp.MSN_APPID+"&to="+t_jp.binglang+"&texts="+d,dataType:"jsonp",jsonp:"oncomplete",success:e})}function z(b,e){p=2;y(e,function(d){a(d).each(function(c){l(b[c],this.TranslatedText)})})}function A(b,e){a.getJSON(t_jp.post_url+"?tgp="+e+"&tgl="+t_jp.lang,function(d){d.sentences!==undefined&&d.sentences[0].trans&&
15
- l(b,d.sentences[0].trans)})}function s(b,e){if(t_jp.msn&&t_jp.preferred==="2")z(b,e);else if(t_jp.tgp)e[0]&&A(b[0],e[0]);else r(b,e,false)}function t(){var b=[],e=0,d=[],c=[];if(t_jp.tgp)u=0;a("."+h+'[data-source=""]').each(function(){var f=a(this).attr("data-token"),g=a(this).attr("data-orig");if(g===undefined)g=a(this).html();if(b[g]!==1){b[g]=1;if(e+g.length>u){s(c,d);e=0;d=[];c=[]}e+=g.length;c.push(f);d.push(g)}});s(c,d)}var u=128,j,h=t_jp.prefix,m=h+"pbar",k=m+"_s",p=1,q=0,o,i=[],n=[];t_jp.MSN_APPID=
16
- "FACA8E2DF8DCCECE0DC311C6E57DA98EFEFA9BC6";a(document).ready(function(){if(t_jp.msn){t_jp.binglang=t_jp.lang;if(t_jp.binglang==="zh")t_jp.binglang="zh-chs";else if(t_jp.binglang==="zh-tw")t_jp.binglang="zh-cht"}a("#"+h+"setdeflang").click(function(){a.get(t_jp.post_url+"?tr_cookie="+Math.random());a(this).hide("slow");return false});j=a("."+h+'[data-source=""]').size();a.ajaxSetup({cache:true});if(j&&!t_jp.noauto&&(t_jp.google||t_jp.msn||t_jp.tgp))if(t_jp.progress){var b=function(){a.xLazyLoader({js:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js",
17
- css:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/ui-lightness/jquery-ui.css",success:function(){a("#"+h+"credit").css({overflow:"auto"}).append('<div style="float: left;width: 90%;height: 10px" id="'+m+'"/><div style="margin-bottom:10px;float:left;width: 90%;height: 10px" id="'+k+'"/>');a("#"+m).progressbar({value:0});a("#"+k).progressbar({value:0});a("#"+k+" > div").css({background:"#28F828",border:"#08A908 1px solid"});t()}})};typeof a.xLazyLoader==="function"?b():a.getScript(t_jp.plugin_url+
18
- "/js/lazy.js",b)}else t();t_jp.edit&&a.getScript(t_jp.plugin_url+"/js/transposhedit.js")})})(jQuery);
 
1
  /*
2
+ * Transposh v0.7.0
3
  * http://transposh.org/
4
  *
5
+ * Copyright 2011, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
  */
11
+ (function(a){function v(b,e){if(a.trim(e).length!==0){var c=function(){var d=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),f=a("#"+h+"img_"+d);a("#"+h+d).attr("data-source",1);f.removeClass("tr-icon-yellow").removeClass("tr-icon-green").addClass("tr-icon-yellow")};a("*[data-token='"+b+"'][data-hidden!='y']").html(e).each(c);a("*[data-token='"+b+"'][data-hidden='y']").attr("data-trans",e).each(c)}}function w(b,e){clearTimeout(p);i.push(b);n.push(e);v(b,e);p=setTimeout(function(){var c=
12
+ {ln0:t_jp.lang,sr0:o,translation_posted:"2",items:i.length},d;for(d=0;d<i.length;d+=1){c["tk"+d]=i[d];c["tr"+d]=n[d];q+=a("*[data-token='"+i[d]+"']").size()}a.ajax({type:"POST",url:t_jp.post_url,data:c,success:function(){var f=q/k*100;t_jp.progress&&a("#"+l).progressbar("value",f)}});n=[];i=[]},200)}function j(b,e){w(b,a("<div>"+a.trim(e)+"</div>").text());var c=(k-a("."+h+'[data-source=""]').size())/k*100;t_jp.progress&&a("#"+m).progressbar("value",c)}function x(b,e,c){var d="",f="";a(b).each(function(g){d+=
13
+ "&q="+encodeURIComponent(b[g])});if(e)f=t_jp.olang;a.ajax({url:"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0"+d+"&langpair="+f+"%7C"+t_jp.lang,dataType:"jsonp",success:c})}function r(b,e,c){x(e,c,function(d){if(d.responseStatus>=200&&d.responseStatus<300)d.responseData.translatedText!==undefined?j(b[0],d.responseData.translatedText):a(d.responseData).each(function(f){this.responseStatus===200&&j(b[f],this.responseData.translatedText)});else d.responseStatus>=400&&!c&&r(b,e,true)})}
14
+ function y(b,e){var c="[";a(b).each(function(d){c+='"'+encodeURIComponent(b[d])+'",'});c=c.slice(0,-1)+"]";a.ajax({url:"http://api.microsofttranslator.com/V2/Ajax.svc/TranslateArray?appId="+t_jp.MSN_APPID+"&to="+t_jp.binglang+"&texts="+c,dataType:"jsonp",jsonp:"oncomplete",success:e})}function z(b,e){o=2;y(e,function(c){a(c).each(function(d){j(b[d],this.TranslatedText)})})}function A(b,e){a.getJSON(t_jp.post_url+"?tgp="+e+"&tgl="+t_jp.lang,function(c){c.sentences!==undefined&&c.sentences[0].trans&&
15
+ j(b,c.sentences[0].trans)})}function B(b,e){var c="";a(b).each(function(d){c+="&q="+encodeURIComponent(b[d])});a.ajax({url:"http://api.apertium.org/json/translate?"+c+"&langpair="+t_jp.olang+"%7C"+t_jp.lang+"&markUnknown=no",dataType:"jsonp",success:e})}function C(b,e){o=3;B(e,function(c){if(c.responseStatus>=200&&c.responseStatus<300)c.responseData.translatedText!==undefined?j(b[0],c.responseData.translatedText):a(c.responseData).each(function(d){this.responseStatus===200&&j(b[d],this.responseData.translatedText)})})}
16
+ function s(b,e){if(t_jp.msn&&t_jp.preferred==="2")z(b,e);else if(t_jp.apertium&&(t_jp.olang==="en"||t_jp.olang==="es"))C(b,e);else if(t_jp.tgp)e[0]&&A(b[0],e[0]);else r(b,e,false)}function t(){var b=[],e=0,c=[],d=[];if(t_jp.tgp)u=0;a("."+h+'[data-source=""]').each(function(){var f=a(this).attr("data-token"),g=a(this).attr("data-orig");if(g===undefined)g=a(this).html();if(b[g]!==1){b[g]=1;if(e+g.length>u){s(d,c);e=0;c=[];d=[]}e+=g.length;d.push(f);c.push(g)}});s(d,c)}var u=128,k,h=t_jp.prefix,m=h+
17
+ "pbar",l=m+"_s",o=1,q=0,p,i=[],n=[];t_jp.MSN_APPID="FACA8E2DF8DCCECE0DC311C6E57DA98EFEFA9BC6";t_jp.jQueryUI="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/";a(document).ready(function(){if(t_jp.msn){t_jp.binglang=t_jp.lang;if(t_jp.binglang==="zh")t_jp.binglang="zh-chs";else if(t_jp.binglang==="zh-tw")t_jp.binglang="zh-cht"}a("#"+h+"setdeflang").click(function(){a.get(t_jp.post_url+"?tr_cookie="+Math.random());a(this).hide("slow");return false});k=a("."+h+'[data-source=""]').size();a.ajaxSetup({cache:true});
18
+ if(k&&!t_jp.noauto&&(t_jp.google||t_jp.msn||t_jp.apertium||t_jp.tgp))if(t_jp.progress){var b=function(){a.xLazyLoader({js:t_jp.jQueryUI+"jquery-ui.min.js",css:t_jp.jQueryUI+"themes/"+t_jp.theme+"/jquery-ui.css",success:function(){a("#"+h+"credit").css({overflow:"auto"}).append('<div style="float: left;width: 90%;height: 10px" id="'+m+'"/><div style="margin-bottom:10px;float:left;width: 90%;height: 10px" id="'+l+'"/>');a("#"+m).progressbar({value:0});a("#"+l).progressbar({value:0});a("#"+l+" > div").css({background:"#28F828",
19
+ border:"#08A908 1px solid"});t()}})};typeof a.xLazyLoader==="function"?b():a.getScript(t_jp.plugin_url+"/js/lazy.js",b)}else t();t_jp.edit&&a.getScript(t_jp.plugin_url+"/js/transposhedit.js")})})(jQuery);
js/transposhadmin.js CHANGED
@@ -1,12 +1,12 @@
1
  /*
2
- * Transposh v0.6.7
3
  * http://transposh.org/
4
  *
5
- * Copyright 2010, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
10
  */
11
  var timer,items=0,translations=[],tokens=[],langs=[],sources=[],BATCH_SIZE=128,pair_count=0,curr_pair=0;t_jp.MSN_APPID="FACA8E2DF8DCCECE0DC311C6E57DA98EFEFA9BC6";function make_progress(e,b){curr_pair+=1;jQuery("#progress_bar").progressbar("value",curr_pair/pair_count*100);jQuery("#p").text("("+b+") "+e);curr_pair===pair_count&&jQuery("#tr_loading").data("done",true)}
12
  function ajax_translate_me(e,b,c,d){b=jQuery("<div>"+jQuery.trim(b)+"</div>").text();make_progress(b,c);clearTimeout(timer);items+=1;tokens.push(e);translations.push(b);langs.push(c);sources.push(d);timer=setTimeout(function(){var f={translation_posted:"2",items:items},a;for(a=0;a<items;a+=1){if(tokens[a]!==tokens[a-1])f["tk"+a]=tokens[a];if(langs[a]!==langs[a-1])f["ln"+a]=langs[a];if(translations[a]!==translations[a-1])f["tr"+a]=translations[a];if(sources[a]!==sources[a-1])f["sr"+a]=sources[a]}jQuery.ajax({type:"POST",
1
  /*
2
+ * Transposh v0.7.0
3
  * http://transposh.org/
4
  *
5
+ * Copyright 2011, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
  */
11
  var timer,items=0,translations=[],tokens=[],langs=[],sources=[],BATCH_SIZE=128,pair_count=0,curr_pair=0;t_jp.MSN_APPID="FACA8E2DF8DCCECE0DC311C6E57DA98EFEFA9BC6";function make_progress(e,b){curr_pair+=1;jQuery("#progress_bar").progressbar("value",curr_pair/pair_count*100);jQuery("#p").text("("+b+") "+e);curr_pair===pair_count&&jQuery("#tr_loading").data("done",true)}
12
  function ajax_translate_me(e,b,c,d){b=jQuery("<div>"+jQuery.trim(b)+"</div>").text();make_progress(b,c);clearTimeout(timer);items+=1;tokens.push(e);translations.push(b);langs.push(c);sources.push(d);timer=setTimeout(function(){var f={translation_posted:"2",items:items},a;for(a=0;a<items;a+=1){if(tokens[a]!==tokens[a-1])f["tk"+a]=tokens[a];if(langs[a]!==langs[a-1])f["ln"+a]=langs[a];if(translations[a]!==translations[a-1])f["tr"+a]=translations[a];if(sources[a]!==sources[a-1])f["sr"+a]=sources[a]}jQuery.ajax({type:"POST",
js/transposhcontrol.js CHANGED
@@ -1,12 +1,12 @@
1
  /*
2
- * Transposh v0.6.7
3
  * http://transposh.org/
4
  *
5
- * Copyright 2010, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
10
  */
11
  jQuery(function(){jQuery("#tr_anon").click(function(){if(jQuery("#tr_anon").attr("checked")){jQuery(".translateable").addClass("active").removeClass("translateable");jQuery("#sortable .active").each(function(){jQuery("input",this).val(jQuery(this).attr("id")+",v,t")})}jQuery("#yellowcolor").toggleClass("hidden")});jQuery("#sortable").sortable({placeholder:"highlight",update:function(b,a){a.item.unbind("click");a.item.one("click",function(c){c.stopImmediatePropagation();jQuery(this).click(clickfunction)})}});
12
  jQuery("#sortable").disableSelection();jQuery("#changename").click(function(){jQuery(".langname").toggleClass("hidden");return false});jQuery("#selectall").click(function(){jQuery("#sortable .languages").addClass("active").removeClass("translateable");jQuery("#sortable .active").each(function(){jQuery("input",this).val(jQuery(this).attr("id")+",v,t")});return false});clickfunction=function(){if(jQuery(this).attr("id")!=jQuery("#default_list li").attr("id")){if(jQuery("#tr_anon").attr("checked"))jQuery(this).toggleClass("active");
@@ -15,6 +15,7 @@ drop:function(b,a){jQuery("#default_list").empty();jQuery(a.draggable.clone().re
15
  return jQuery(b).attr("id")>jQuery(a).attr("id")?1:-1}).remove().appendTo("#sortable").dblclick(clickfunction).click(clickfunction);return false});jQuery("#sortname").click(function(){jQuery("#sortable li").sort(function(b,a){langa=jQuery(".langname",b).filter(function(){return!jQuery(this).hasClass("hidden")}).text();langb=jQuery(".langname",a).filter(function(){return!jQuery(this).hasClass("hidden")}).text();langdef=jQuery(".langname","#default_list li").filter(function(){return!jQuery(this).hasClass("hidden")}).text();
16
  if(langa==langdef)return-1;if(langb==langdef)return 1;return langa>langb?1:-1}).remove().appendTo("#sortable").dblclick(clickfunction).click(clickfunction);return false});jQuery.ajaxSetup({cache:false});backupclick=function(){jQuery("#transposh-backup").unbind("click").click(function(){return false}).text("Backup In Progress");jQuery.get(t_jp.post_url+"?backup",function(b){var a="red";if(b[0]=="2")a="green";jQuery("#backup_result").html(b).css("color",a);jQuery("#transposh-backup").unbind("click").click(backupclick).text("Do Backup Now")});
17
  return false};jQuery("#transposh-backup").click(backupclick);cleanautoclick=function(b,a){if(!confirm("Are you sure you want to do this?"))return false;if(b==0&&!confirm("Are you REALLY sure you want to do this?"))return false;var c=a.text();a.unbind("click").click(function(){return false}).text("Cleanup in progress");jQuery.get(t_jp.post_url+"?nonce="+a.attr("nonce")+"&days="+b+"&cleanup",function(){a.unbind("click").click(function(){cleanautoclick(b,a);return false}).text(c)});return false};jQuery("#transposh-clean-auto").click(function(){cleanautoclick(0,
18
- jQuery(this));return false});jQuery("#transposh-clean-auto14").click(function(){cleanautoclick(14,jQuery(this));return false});do_translate_all=function(){jQuery("#progress_bar_all").progressbar({value:0});stop_translate_var=false;jQuery("#tr_loading").data("done",true);jQuery.ajaxSetup({cache:false});jQuery.getJSON(t_jp.post_url,{translate_all:"y"},function(b){dotimer=function(a){clearTimeout(timer2);if(jQuery("#tr_loading").data("done")||jQuery("#tr_loading").data("attempt")>4){jQuery("#progress_bar_all").progressbar("value",
19
- (a+1)/b.length*100);jQuery("#tr_loading").data("attempt",0);translate_post(b[a]);if(b[a]&&!stop_translate_var)timer2=setTimeout(function(){dotimer(a+1)},1E3)}else{jQuery("#tr_loading").data("attempt",jQuery("#tr_loading").data("attempt")+1);timer2=setTimeout(function(){dotimer(a)},6E4)}};timer2=setTimeout(function(){dotimer(0)},0)});jQuery("#transposh-translate").text("Stop translate");jQuery("#transposh-translate").unbind("click").click(stop_translate);return false};stop_translate=function(){clearTimeout(timer2);
20
- stop_translate_var=true;jQuery("#transposh-translate").text("Translate All Now");jQuery("#transposh-translate").unbind("click").click(do_translate_all);return false};jQuery("#transposh-translate").click(do_translate_all)});
 
1
  /*
2
+ * Transposh v0.7.0
3
  * http://transposh.org/
4
  *
5
+ * Copyright 2011, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
  */
11
  jQuery(function(){jQuery("#tr_anon").click(function(){if(jQuery("#tr_anon").attr("checked")){jQuery(".translateable").addClass("active").removeClass("translateable");jQuery("#sortable .active").each(function(){jQuery("input",this).val(jQuery(this).attr("id")+",v,t")})}jQuery("#yellowcolor").toggleClass("hidden")});jQuery("#sortable").sortable({placeholder:"highlight",update:function(b,a){a.item.unbind("click");a.item.one("click",function(c){c.stopImmediatePropagation();jQuery(this).click(clickfunction)})}});
12
  jQuery("#sortable").disableSelection();jQuery("#changename").click(function(){jQuery(".langname").toggleClass("hidden");return false});jQuery("#selectall").click(function(){jQuery("#sortable .languages").addClass("active").removeClass("translateable");jQuery("#sortable .active").each(function(){jQuery("input",this).val(jQuery(this).attr("id")+",v,t")});return false});clickfunction=function(){if(jQuery(this).attr("id")!=jQuery("#default_list li").attr("id")){if(jQuery("#tr_anon").attr("checked"))jQuery(this).toggleClass("active");
15
  return jQuery(b).attr("id")>jQuery(a).attr("id")?1:-1}).remove().appendTo("#sortable").dblclick(clickfunction).click(clickfunction);return false});jQuery("#sortname").click(function(){jQuery("#sortable li").sort(function(b,a){langa=jQuery(".langname",b).filter(function(){return!jQuery(this).hasClass("hidden")}).text();langb=jQuery(".langname",a).filter(function(){return!jQuery(this).hasClass("hidden")}).text();langdef=jQuery(".langname","#default_list li").filter(function(){return!jQuery(this).hasClass("hidden")}).text();
16
  if(langa==langdef)return-1;if(langb==langdef)return 1;return langa>langb?1:-1}).remove().appendTo("#sortable").dblclick(clickfunction).click(clickfunction);return false});jQuery.ajaxSetup({cache:false});backupclick=function(){jQuery("#transposh-backup").unbind("click").click(function(){return false}).text("Backup In Progress");jQuery.get(t_jp.post_url+"?backup",function(b){var a="red";if(b[0]=="2")a="green";jQuery("#backup_result").html(b).css("color",a);jQuery("#transposh-backup").unbind("click").click(backupclick).text("Do Backup Now")});
17
  return false};jQuery("#transposh-backup").click(backupclick);cleanautoclick=function(b,a){if(!confirm("Are you sure you want to do this?"))return false;if(b==0&&!confirm("Are you REALLY sure you want to do this?"))return false;var c=a.text();a.unbind("click").click(function(){return false}).text("Cleanup in progress");jQuery.get(t_jp.post_url+"?nonce="+a.attr("nonce")+"&days="+b+"&cleanup",function(){a.unbind("click").click(function(){cleanautoclick(b,a);return false}).text(c)});return false};jQuery("#transposh-clean-auto").click(function(){cleanautoclick(0,
18
+ jQuery(this));return false});jQuery("#transposh-clean-auto14").click(function(){cleanautoclick(14,jQuery(this));return false});maintclick=function(b){if(!confirm("Are you sure you want to do this?"))return false;var a=b.text();b.unbind("click").click(function(){return false}).text("Maintenance in progress");jQuery.get(t_jp.post_url+"?nonce="+b.attr("nonce")+"&maint",function(){b.unbind("click").click(function(){maintclick(b);return false}).text(a)});return false};jQuery("#transposh-maint").click(function(){maintclick(jQuery(this));
19
+ return false});do_translate_all=function(){jQuery("#progress_bar_all").progressbar({value:0});stop_translate_var=false;jQuery("#tr_loading").data("done",true);jQuery.ajaxSetup({cache:false});jQuery.getJSON(t_jp.post_url,{translate_all:"y"},function(b){dotimer=function(a){clearTimeout(timer2);if(jQuery("#tr_loading").data("done")||jQuery("#tr_loading").data("attempt")>4){jQuery("#progress_bar_all").progressbar("value",(a+1)/b.length*100);jQuery("#tr_loading").data("attempt",0);translate_post(b[a]);
20
+ if(b[a]&&!stop_translate_var)timer2=setTimeout(function(){dotimer(a+1)},1E3)}else{jQuery("#tr_loading").data("attempt",jQuery("#tr_loading").data("attempt")+1);timer2=setTimeout(function(){dotimer(a)},6E4)}};timer2=setTimeout(function(){dotimer(0)},0)});jQuery("#transposh-translate").text("Stop translate");jQuery("#transposh-translate").unbind("click").click(stop_translate);return false};stop_translate=function(){clearTimeout(timer2);stop_translate_var=true;jQuery("#transposh-translate").text("Translate All Now");
21
+ jQuery("#transposh-translate").unbind("click").click(do_translate_all);return false};jQuery("#transposh-translate").click(do_translate_all)});
js/transposhedit.js CHANGED
@@ -1,23 +1,38 @@
1
  /*
2
- * Transposh v0.6.7
3
  * http://transposh.org/
4
  *
5
- * Copyright 2010, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
10
  */
11
- (function(a){function h(b,c){if(a.trim(c).length===0)c=a("[data-token='"+b+"']").attr("data-orig");var e=function(){var f=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),d=a("#"+t_jp.prefix+"img_"+f);a("#"+t_jp.prefix+f).attr("data-source",0);d.removeClass("tr-icon-yellow").removeClass("tr-icon-green").addClass("tr-icon-green")};a("*[data-token='"+b+"'][data-hidden!='y']").html(c).each(e);a("*[data-token='"+b+"'][data-hidden='y']").attr("data-trans",c).each(e)}function i(b,c){h(b,
12
- c);a.ajax({type:"POST",url:t_jp.post_url,data:{ln0:t_jp.lang,sr0:0,translation_posted:"2",items:1,tk0:b,tr0:c},success:function(){},error:function(e){alert("Error !!! failed to translate.\n\nServer's message: "+e.statusText)}})}function j(b,c){a.ajax({url:"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="+encodeURIComponent(b)+"&langpair=%7C"+t_jp.lang,dataType:"jsonp",success:c})}function k(){a(":button:contains('Suggest - Google')").attr("disabled","disabled").addClass("ui-state-disabled");
13
- a(":button:contains('Suggest - Bing')").attr("disabled","").removeClass("ui-state-disabled");j(a("#"+t_jp.prefix+"original").val(),function(b){b.responseStatus===200&&a("#"+t_jp.prefix+"translation").val(a("<div>"+a.trim(b.responseData.translatedText)+"</div>").text()).keyup()})}function l(b,c){a.ajax({url:"http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+t_jp.MSN_APPID+"&to="+t_jp.binglang+"&text="+encodeURIComponent(b),dataType:"jsonp",jsonp:"oncomplete",success:c})}function m(){a(":button:contains('Suggest - Bing')").attr("disabled",
14
- "disabled").addClass("ui-state-disabled");a(":button:contains('Suggest - Google')").attr("disabled","").removeClass("ui-state-disabled");l(a("#"+t_jp.prefix+"original").val(),function(b){a("#"+t_jp.prefix+"translation").val(a("<div>"+a.trim(b)+"</div>").text()).keyup()})}function n(){a('<div id="dial" title="Close without saving?"><p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>You have made a change to the translation. Are you sure you want to discard it?</p></div>').appendTo("body").dialog({bgiframe:true,
15
- resizable:false,height:140,modal:true,overlay:{backgroundColor:"#000",opacity:0.5},buttons:{Discard:function(){a("#"+t_jp.prefix+"translation").data("edit",{changed:false});a(this).dialog("close");a("#"+t_jp.prefix+"d-tabs").dialog("close")},Cancel:function(){a(this).dialog("close")}}})}function g(b){var c={},e={};if(t_jp.msn)c["Suggest - Bing"]=function(){m()};if(t_jp.google)c["Suggest - Google"]=function(){k()};c.Ok=function(){var f=a("#"+t_jp.prefix+"translation").val(),d=a("#"+t_jp.prefix+b).attr("data-token");
16
- if(a("#"+t_jp.prefix+"translation").data("edit").changed){i(d,f);a("#"+t_jp.prefix+"translation").data("edit",{changed:false})}a(this).dialog("close")};e={Close:function(){a(this).dialog("close")}};a("#"+t_jp.prefix+"d-tabs").remove();a('<div id="'+t_jp.prefix+'d-tabs" title="'+t_jp.edit_box_title+'"/>').appendTo("body");a("#"+t_jp.prefix+"d-tabs").append("<ul/>").tabs({cache:true}).tabs("add","#"+t_jp.prefix+"d-tabs-1",t_jp.edit_box_translate).tabs("add",t_jp.post_url+"?tr_token_hist="+a("#"+t_jp.prefix+
17
- b).attr("data-token")+"&lang="+t_jp.lang,t_jp.edit_box_history).css("text-align","left").css("padding",0).bind("tabsload",function(f,d){a("table",d.panel).addClass("ui-widget ui-widget-content").css({width:"95%",padding:"0"});a("table thead tr",d.panel).addClass("ui-widget-header");a("table tbody td[source='2']",d.panel).append('<span title="computer" style="display: inline-block; margin-right: 0.3em;" class="ui-icon ui-icon-gear"></span>');a("table tbody td[source='1']",d.panel).append('<span title="computer" style="display: inline-block; margin-right: 0.3em;" class="ui-icon ui-icon-gear"></span>');
18
- a("table tbody td[source='0']",d.panel).append('<span title="human" style="display: inline-block; margin-right: 0.3em;" class="ui-icon ui-icon-person"></span>')}).bind("tabsselect",function(f,d){a(d.tab).text()===t_jp.edit_box_translate?a("#"+t_jp.prefix+"d-tabs").dialog("option","buttons",c):a("#"+t_jp.prefix+"d-tabs").dialog("option","buttons",e)}).bind("dialogbeforeclose",function(){if(a("#"+t_jp.prefix+"translation").data("edit").changed){n();return false}return true});a("#"+t_jp.prefix+"d-tabs li").css("list-style-type",
19
- "none").css("list-style-position","outside");a("#"+t_jp.prefix+"d-tabs-1").css("padding","1px").append('<form id="'+t_jp.prefix+'form"><fieldset><label for="original">'+t_jp.edit_box_original+'</label><textarea cols="80" row="3" name="original" id="'+t_jp.prefix+'original" class="text ui-widget-content ui-corner-all" readonly="y"/><label for="translation">'+t_jp.edit_box_translate_to+'</label><textarea cols="80" row="3" name="translation" id="'+t_jp.prefix+'translation" value="" class="text ui-widget-content ui-corner-all"/></fieldset></form>');
20
- a("#"+t_jp.prefix+"d-tabs-1 label").css("display","block");a("#"+t_jp.prefix+"d-tabs-1 textarea.text").css({"margin-bottom":"12px",width:"95%",padding:".4em"});a("#"+t_jp.prefix+"original").val(a("#"+t_jp.prefix+b).attr("data-orig"));a("#"+t_jp.prefix+"translation").val(a("#"+t_jp.prefix+b).html());a("#"+t_jp.prefix+b).attr("data-trans")&&a("#"+t_jp.prefix+"translation").val(a("#"+t_jp.prefix+b).attr("data-trans"));a("#"+t_jp.prefix+"translation").data("edit",{changed:false});a("#"+t_jp.prefix+"translation").keyup(function(){if(a("#"+
21
- t_jp.prefix+b).text()!==a(this).val()){a(this).css("background","yellow");a(this).data("edit",{changed:true})}else{a(this).css("background","");a(this).data("edit",{changed:false})}});a("#"+t_jp.prefix+"d-tabs").dialog({width:500,buttons:c})}a("."+t_jp.prefix).each(function(){var b=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),c;a(this).after('<span id="'+t_jp.prefix+"img_"+b+'" class="tr-icon" title="'+a(this).attr("data-orig")+'"></span>');c=a("#"+t_jp.prefix+"img_"+b);c.click(function(){if(typeof a.fn.tabs!==
22
- "function"||typeof a.fn.dialog!=="function"){a.ajaxSetup({cache:true});a.getScript(t_jp.plugin_url+"/js/lazy.js",function(){a.xLazyLoader({js:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js",css:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/ui-lightness/jquery-ui.css",success:function(){g(b)}})})}else g(b);return false}).css({border:"0px",margin:"1px",padding:"0px"});if(a(this).attr("data-source")==="0")c.addClass("tr-icon-green");else a(this).attr("data-source")&&
23
- c.addClass("tr-icon-yellow");a(this).attr("data-hidden")==="y"&&c.css({opacity:"0.6"})})})(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /*
2
+ * Transposh v0.7.0
3
  * http://transposh.org/
4
  *
5
+ * Copyright 2011, Team Transposh
6
  * Licensed under the GPL Version 2 or higher.
7
  * http://transposh.org/license
8
  *
9
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
10
  */
11
+ (function(a){function f(c){var d;if(typeof t_jp.l==="object"&&(d=t_jp.l[c]))return d;return c}function t(c,d,j){if(a.trim(d).length===0)d=a("[data-token='"+c+"']").attr("data-orig");var h=function(){var g=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),m=a(b+"img_"+g);a(b+g).attr("data-source",j);m.removeClass("tr-icon-yellow").removeClass("tr-icon-green");if(j==0)m.addClass("tr-icon-green");else j&&m.addClass("tr-icon-yellow")};a("*[data-token='"+c+"'][data-hidden!='y']").html(d).each(h);
12
+ a("*[data-token='"+c+"'][data-hidden='y']").attr("data-trans",d).each(h);a(b+"translation").data("origval",d);a(b+"translation").keyup()}function w(c,d){t(c,d,0);a.ajax({type:"POST",url:t_jp.post_url,data:{ln0:t_jp.lang,sr0:0,translation_posted:"2",items:1,tk0:c,tr0:d},success:function(){},error:function(j){alert("Error !!! failed to translate.\n\nServer's message: "+j.statusText)}})}function x(c,d){a.ajax({url:"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="+encodeURIComponent(c)+
13
+ "&langpair=%7C"+t_jp.lang,dataType:"jsonp",success:d})}function y(){x(a(b+"original").val(),function(c){c.responseStatus===200&&a(b+"translation").val(a("<div>"+a.trim(c.responseData.translatedText)+"</div>").text()).keyup()})}function z(c,d){a.ajax({url:"http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+t_jp.MSN_APPID+"&to="+t_jp.binglang+"&text="+encodeURIComponent(c),dataType:"jsonp",jsonp:"oncomplete",success:d})}function A(){z(a(b+"original").val(),function(c){a(b+"translation").val(a("<div>"+
14
+ a.trim(c)+"</div>").text()).keyup()})}function B(c,d){a.ajax({url:"http://api.apertium.org/json/translate?q="+encodeURIComponent(c)+"&langpair=en%7C"+t_jp.lang,dataType:"jsonp",success:d})}function C(){B(a(b+"original").val(),function(c){a(b+"translation").val(a("<div>"+a.trim(c.responseData.translatedText)+"</div>").text()).keyup()})}function s(c){var d,j,h;d=a(c).dialog("widget").find(".ui-dialog-title");j=d.css("margin-right");h=d.css("margin-left");d.css({"float":k,"margin-right":h,"margin-left":j});
15
+ c=a(c).dialog("widget").find(".ui-dialog-titlebar-close");j=c.css("right");h=c.css("left");c.css({right:h,left:j})}function D(){var c=b+"confirmdialog";a(c).remove();a('<div id="'+e+'confirmdialog" title="'+f("Close without saving?")+'"><span class="ui-icon ui-icon-alert" style="float:'+k+"; margin-bottom:20px; margin-"+l+':7px"></span><span style="clear:both">'+f("You have made a change to the translation. Are you sure you want to discard it?")+'<span><span id="'+e+'dcbar" style="display:block"><button id="'+
16
+ e+'cancel">'+f("Cancel")+'</button><button id="'+e+'discard">'+f("Discard")+"</button></span>"+ +"</div>").appendTo("body").dialog({resizable:false,modal:true,minHeight:50,overlay:{backgroundColor:"#000",opacity:0.5}});a(b+"cancel").button({icons:{primary:"ui-icon-closethick"},text:false}).click(function(){a(c).dialog("close")});a(b+"discard").button({icons:{primary:"ui-icon-check"},text:false}).click(function(){a(b+"translation").data("changed",false);a(c).dialog("close");a(b+"dialog").dialog("close")});
17
+ a(b+"dcbar").css({"float":l}).buttonset();if(a("html").attr("dir")==="rtl"){s(c);a(b+"dcbar button:first").addClass("ui-corner-"+k).removeClass("ui-corner-"+l);a(b+"dcbar button:last").addClass("ui-corner-"+l).removeClass("ui-corner-"+k)}}function E(c){var d=b+"historydialog";a(d).remove();a('<div id="'+e+'historydialog" title="'+f("History")+'">'+f("Loading...")+"</div>").appendTo("body");a(d).css("padding",0).dialog({width:"450px",show:"slide"});a("html").attr("dir")==="rtl"&&s(d);a.ajax({url:t_jp.post_url,
18
+ data:{tr_token_hist:a(b+c).attr("data-token"),lang:t_jp.lang},dataType:"json",cache:false,success:function(j){var h,g,m,p;a(d).empty().append('<table width="100%"><col style="width: 80%;"><col><col><thead><tr> <th>'+f("Translated")+"</th><th>"+f("By")+"</th><th>"+f("At")+"</th></tr></thead><tbody></tbody></table>");a.each(j,function(n,i){switch(i.source){case "1":h="tr-icon-google";g=f("google");break;case "2":h="tr-icon-bing";g=f("bing");break;case "3":h="tr-icon-apertium";g=f("apertium");break;
19
+ default:h="ui-icon-person";g=f("manual translation")}if(i.user_login===null)i.user_login=i.translated_by;m='<span class="ui-button ui-widget ui-button-icon-only" style="width: 18px; border: 0px; margin-'+l+': 3px"><span title="'+g+'" style="cursor: default" class="ui-button-icon-primary ui-icon '+h+'"></span><span class="ui-button-text" style="display: inline-block; "></span></span>';p=i.can_delete?'<span class="'+e+'delete" title="'+f("delete")+'" style="width: 18px; margin-'+k+': 3px">':"";a(d+
20
+ " tbody").append("<tr><td>"+i.translated+'</td><td id="'+e+'histby">'+m+i.user_login+'</td><td id="'+e+'histstamp">'+i.timestamp+p+"</td></tr>")});a(b+"histby,"+b+"histstamp").css("white-space","nowrap");a(d+" th").addClass("ui-widget-header").css("padding","3px");a(d+" td").addClass("ui-widget-content").css("padding","3px");a("."+e+"delete").button({icons:{primary:"ui-icon-circle-close"},text:false}).click(function(){var n=a(this).parents("tr");a.ajax({url:t_jp.post_url,data:{tr_token_hist:a(b+c).attr("data-token"),
21
+ timestamp:a(this).parents("tr").children(":last").text(),action:"delete",lang:t_jp.lang},dataType:"json",cache:false,success:function(i){if(i===false)a(n).children().addClass("ui-state-error");else{a(n).empty();t(a(b+c).attr("data-token"),i.translated,i.source)}}})});a("."+e+"delete .ui-button-text").css("display","inline-block")}})}function q(c){var d="",j="",h="",g=b+"dialog";if(t_jp.msn)d='<button class="'+e+'suggest" id="'+e+'bing">'+f("bing suggest")+"</button>";if(t_jp.google)j='<button class="'+
22
+ e+'suggest" id="'+e+'google">'+f("google suggest")+"</button>";if(t_jp.apertium)h='<button class="'+e+'suggest" id="'+e+'apertium">'+f("apertium suggest")+"</button>";a(g).remove();a('<div id="'+e+'dialog" title="'+f("Edit Translation")+'"/>').appendTo("body");var m=a(b+c).attr("data-srclang");if(m===undefined)m=t_jp.olang;a(g).css("padding","1px").append('<div style="width: 100%"><label for="original">'+f("Original text")+' (<a href="#" title="'+f("read alternate translations")+'" id="'+e+'orglang">'+
23
+ r[m]+'</a>)</label><textarea cols="80" row="3" name="original" id="'+e+'original" readonly="y"/><span id="'+e+'utlbar"><button id="'+e+'prev">'+f("previous translation")+'</button><button id="'+e+'zoom">'+f("find on page")+'</button><button id="'+e+'next">'+f("next translation")+'</button></span><label for="translation">'+f("Translate to")+'</label><textarea cols="80" row="3" name="translation" lang="'+t_jp.lang+'"id="'+e+'translation"/><span id="'+e+'ltlbar"><button id="'+e+'history">'+f("view translation log")+
24
+ '</button><button id="'+e+'keyboard">'+f("virtual keyboard")+"</button>"+j+d+h+'<button id="'+e+'approve">'+f("approve translation")+"</button></span></div>");a(b+"utlbar,"+b+"ltlbar").css({"float":l}).buttonset();a(g+" textarea").css({width:"485px",padding:".4em",margin:"2px 0 0 0",resize:"vertical"}).addClass("text ui-widget-content ui-corner-all");a(g+" label").css({display:"block",clear:"both"});a(b+"orglang").click(function(){a(b+"langmenu").length?a(b+"langmenu").toggle():a.xLazyLoader({js:[t_jp.plugin_url+
25
+ "/js/jquery.ui.menu.js"],success:function(){a.ajax({url:t_jp.post_url,data:{tr_token_alt:a(b+c).attr("data-token")},dataType:"json",cache:false,success:function(p){var n;if(!(n=a(b+c).attr("data-srclang")))n=t_jp.olang;var i='<li data-translated="'+a(b+c).attr("data-orig")+'"><a href="#">'+r[n]+"</a></li>";a(p).each(function(F,o){if(o.lang!==t_jp.lang)i=i+'<li data-translated="'+o.translated+'"><a href="#">'+r[o.lang]+"</a></li>"});a('<ul style="position: absolute; top: 0px" id="'+e+'langmenu">'+
26
+ i).appendTo(g);a(b+"langmenu").menu({select:function(F,o){a(this).hide();a(b+"original").val(o.item.attr("data-translated"));a(b+"orglang").text(o.item.text()).addClass("ui-state-highlight");r[n]===o.item.text()&&a(b+"orglang").removeClass("ui-state-highlight")},input:a(this)}).show().css({top:0,left:0}).position({my:k+" top",at:k+" bottom",of:a(b+"orglang")})}})}});return false});a(b+"prev").button({icons:{primary:"ui-icon-seek-"+u},text:false});a(b+"zoom").button({icons:{primary:"ui-icon-search"},
27
+ text:false});a(b+"next").button({icons:{primary:"ui-icon-seek-"+v},text:false});a(b+(Number(c)-1)).length?a(b+"prev").click(function(){q(Number(c)-1)}):a(b+"prev").button("disable");a(b+"zoom").click(function(){a("html, body").animate({scrollTop:a(b+c).offset().top},500);a(g).dialog("widget").css({top:a(g).dialog("widget").offset().top-window.scrollY,position:"fixed"});a(b+c).animate({opacity:0.1},"slow",function(){a(g).dialog("widget").css({top:a(g).dialog("widget").offset().top,position:"absolute"})}).animate({opacity:1},
28
+ "slow").animate({opacity:0.1},"slow").animate({opacity:1},"slow").animate({opacity:0.1},"slow").animate({opacity:1},"slow")});a(b+(Number(c)+1)).length?a(b+"next").click(function(){q(Number(c)+1)}):a(b+"next").button("disable");a(b+"history").button({icons:{primary:"ui-icon-clipboard"},text:false}).click(function(){E(c)});a(b+"keyboard").button({icons:{primary:"ui-icon-calculator"},text:false}).click(function(){a.xLazyLoader({js:[t_jp.plugin_url+"/js/keyboard.js"],css:[t_jp.plugin_url+"/css/keyboard.css"],
29
+ success:function(){VKI_attach(a(b+"translation").get(0));VKI_show(a(b+"translation").get(0))}})});a(b+"google").button({icons:{primary:"tr-icon-google"},text:false}).click(function(){y();a("."+e+"suggest").button("enable");a(this).button("disable")});a(b+"bing").button({icons:{primary:"tr-icon-bing"},text:false}).click(function(){A();a("."+e+"suggest").button("enable");a(this).button("disable")});a(b+"apertium").button({icons:{primary:"tr-icon-apertium"},text:false}).click(function(){C();a("."+e+
30
+ "suggest").button("enable");a(this).button("disable")});a(b+"approve").button({icons:{primary:"ui-icon-check"},text:false}).click(function(){var p=a(b+"translation").val(),n=a(b+c).attr("data-token");if(a(b+"translation").data("changed")||a(b+c).attr("data-source")!=="0")w(n,p)});a(b+"original").val(a(b+c).attr("data-orig"));a(b+"translation").val(a(b+c).html());a(b+c).attr("data-trans")&&a(b+"translation").val(a(b+c).attr("data-trans"));a(b+"translation").data("origval",a(b+"translation").val());
31
+ a(b+"translation").keyup(function(){if(a(this).data("origval")!==a(this).val()){a(this).addClass("ui-state-highlight");a(b+"approve").button("enable");a(this).data("changed",true)}else{a(this).removeClass("ui-state-highlight");a(b+c).attr("data-source")==="0"&&a(b+"approve").button("disable");a(this).data("changed",false)}});a(b+"translation").keyup();a(g).dialog({resizable:false,width:500});if(a("html").attr("dir")==="rtl"){s(g);a(b+"utlbar button:first").addClass("ui-corner-"+k).removeClass("ui-corner-"+
32
+ l);a(b+"utlbar button:last").addClass("ui-corner-"+l).removeClass("ui-corner-"+k);a(b+"ltlbar button:first").addClass("ui-corner-"+k).removeClass("ui-corner-"+l);a(b+"ltlbar button:last").addClass("ui-corner-"+l).removeClass("ui-corner-"+k)}a(b+"orglang").blur();a(g).bind("dialogclose",function(){typeof VKI_close==="function"&&VKI_close(a(b+"translation").get(0));a(b+"historydialog").remove()});a(g).bind("dialogbeforeclose",function(){if(a(b+"translation").data("changed")){D();return false}return true})}
33
+ var r={en:"English",af:"Afrikaans",sq:"Shqip",ar:"\u0627\u0644\u0639\u0631\u0628\u064a\u0629",hy:"\u0540\u0561\u0575\u0565\u0580\u0565\u0576",az:"az\u0259rbaycan dili",eu:"Euskara",be:"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f",bg:"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438",ca:"Catal\u00e0",zh:"\u4e2d\u6587 - \u7b80\u4f53","zh-tw":"\u4e2d\u6587 - \u6f22\u5b57",hr:"Hrvatski",cs:"\u010ce\u0161tina",da:"Dansk",nl:"Nederlands",eo:"Esperanto",et:"Eesti keel",fi:"Suomi",
34
+ fr:"Fran\u00e7ais",gl:"Galego",ka:"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",de:"Deutsch",el:"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",ht:"Krey\u00f2l ayisyen",he:"\u05e2\u05d1\u05e8\u05d9\u05ea",hi:"\u0939\u093f\u0928\u094d\u0926\u0940; \u0939\u093f\u0902\u0926\u0940",hu:"Magyar",is:"\u00cdslenska",id:"Bahasa Indonesia",ga:"Gaeilge",it:"Italiano",ja:"\u65e5\u672c\u8a9e",ko:"\uc6b0\ub9ac\ub9d0",la:"lat\u012bna",lv:"Latvie\u0161u valoda",lt:"Lietuvi\u0173 kalba",mk:"\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438 \u0458\u0430\u0437\u0438\u043a",
35
+ ms:"Bahasa Melayu",mt:"Malti",no:"Norsk",fa:"\u0641\u0627\u0631\u0633\u06cc",pl:"Polski",pt:"Portugu\u00eas",ro:"Rom\u00e2n\u0103",ru:"\u0420\u0443\u0441\u0441\u043a\u0438\u0439",sr:"C\u0440\u043f\u0441\u043a\u0438 \u0458\u0435\u0437\u0438\u043a",sk:"Sloven\u010dina",sl:"Sloven\u0161\u010dina",es:"Espa\u00f1ol",sw:"Kiswahili",sv:"svenska",tl:"Tagalog",th:"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22",tr:"T\u00fcrk\u00e7e",uk:"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430",ur:"\u0627\u0631\u062f\u0648",
36
+ vi:"Ti\u1ebfng Vi\u1ec7t",cy:"Cymraeg",yi:"\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"},e=t_jp.prefix,b="#"+e,u="prev",v="next",l="right",k="left";if(a("html").attr("dir")==="rtl"){l="left";k="right";u="next";v="prev"}a("."+e).each(function(){var c=a(this).attr("id").substr(a(this).attr("id").lastIndexOf("_")+1),d;a(this).after('<span id="'+e+"img_"+c+'" class="tr-icon" title="'+a(this).attr("data-orig")+'"></span>');d=a(b+"img_"+c);d.click(function(){if(typeof a.fn.tabs!=="function"||typeof a.fn.dialog!==
37
+ "function"){a.ajaxSetup({cache:true});a.getScript(t_jp.plugin_url+"/js/lazy.js",function(){a.xLazyLoader({js:t_jp.jQueryUI+"jquery-ui.min.js",css:t_jp.jQueryUI+"themes/"+t_jp.theme+"/jquery-ui.css",success:function(){t_jp.locale?a.xLazyLoader({js:[t_jp.plugin_url+"/js/l/"+t_jp.lang+".js"],success:function(){q(c)}}):q(c)}})})}else t_jp.locale?a.xLazyLoader({js:[t_jp.plugin_url+"/js/l/"+t_jp.lang+".js"],success:function(){q(c)}}):q(c);return false}).css({border:"0px",margin:"1px",padding:"0px"});if(a(this).attr("data-source")===
38
+ "0")d.addClass("tr-icon-green");else a(this).attr("data-source")&&d.addClass("tr-icon-yellow");a(this).attr("data-hidden")==="y"&&d.css({opacity:"0.6"})})})(jQuery);
langs/transposh-he_IL.mo CHANGED
Binary file
langs/transposh-he_IL.po CHANGED
@@ -101,7 +101,7 @@ msgstr "תכונות קהילתיות בטרנספוש"
101
  #: wp/transposh_postpublish.php:50
102
  #: wp/transposh_widget.php:88
103
  #: wp/transposh_widget.php:91
104
- #: wp/transposh_widget.php:254
105
  #@ transposh
106
  msgid "Transposh"
107
  msgstr "טרנספוש"
@@ -116,36 +116,6 @@ msgstr "תרגם על ידי לחיצה על הכפתור למטה"
116
  msgid "Translate All Now"
117
  msgstr "תרגם הכל עכשיו"
118
 
119
- #: transposh.php:650
120
- #@ transposh
121
- msgctxt "Edit Interface"
122
- msgid "Edit Translation"
123
- msgstr "עריכת תרגום"
124
-
125
- #: transposh.php:651
126
- #@ transposh
127
- msgctxt "Edit Interface"
128
- msgid "Translate"
129
- msgstr "תרגם"
130
-
131
- #: transposh.php:652
132
- #@ transposh
133
- msgctxt "Edit Interface"
134
- msgid "History"
135
- msgstr "היסטוריה"
136
-
137
- #: transposh.php:653
138
- #@ transposh
139
- msgctxt "Edit Interface"
140
- msgid "Original Text"
141
- msgstr "טקסט מקורי"
142
-
143
- #: transposh.php:654
144
- #@ transposh
145
- msgctxt "Edit Interface"
146
- msgid "Translate To"
147
- msgstr "תרגם ל"
148
-
149
  #: wp/transposh_admin.php:278
150
  #@ transposh
151
  msgid "Plugin Homepage"
@@ -181,192 +151,192 @@ msgstr "שפה נתמכת ע\"י המתרגם של גוגל"
181
  msgid "Language supported by bing translate"
182
  msgstr "שפה נתמכת ע\"י המתרגם של בינג"
183
 
184
- #: wp/transposh_admin.php:381
185
  #@ transposh
186
  msgid "Language is written from right to left"
187
  msgstr "שפה הנכתבת מימין לשמאל"
188
 
189
- #: wp/transposh_admin.php:386
190
  #@ transposh
191
  msgid "Display options:"
192
  msgstr "הגדרות תצוגה:"
193
 
194
- #: wp/transposh_admin.php:387
195
  #@ transposh
196
  msgid "Toggle names of languages between English and Original"
197
  msgstr "שנה את הצגת שפות השפות בין אנגלית למקןר"
198
 
199
- #: wp/transposh_admin.php:388
200
  #@ transposh
201
  msgid "Make all languages active"
202
  msgstr "הפוך את כל השפות לפעילות"
203
 
204
- #: wp/transposh_admin.php:389
205
  #@ transposh
206
  msgid "Sort by language name"
207
  msgstr "מיין לפי שם השפה"
208
 
209
- #: wp/transposh_admin.php:390
210
  #@ transposh
211
  msgid "Sort by lSO code"
212
  msgstr "מיין לפי קוד ה-ISO"
213
 
214
- #: wp/transposh_admin.php:391
215
  #@ transposh
216
  msgid "Legend:"
217
  msgstr "מקרא:"
218
 
219
- #: wp/transposh_admin.php:391
220
  #@ transposh
221
  msgid "Green - active"
222
  msgstr "ירוק - פעיל"
223
 
224
- #: wp/transposh_admin.php:391
225
  #@ transposh
226
  msgid "Yellow - translateable (only translators will see this language)"
227
  msgstr "צהוב - ניתן לתרגום (רק מתרגמים יראו את השפה)"
228
 
229
- #: wp/transposh_admin.php:391
230
  #@ transposh
231
  msgid "blank - inactive"
232
  msgstr "ללא צבע - לא פעיל"
233
 
234
- #: wp/transposh_admin.php:408
235
  #@ transposh
236
  msgid "Who can translate ?"
237
  msgstr "מי יכול לתרגם?"
238
 
239
- #: wp/transposh_admin.php:415
240
  #@ transposh
241
  msgid "Anonymous"
242
  msgstr "אנונימי"
243
 
244
- #: wp/transposh_admin.php:421
245
  #@ transposh
246
  msgid "Enable default language translation"
247
  msgstr "אפשר תרגום של שפת ברירת המחדל"
248
 
249
- #: wp/transposh_admin.php:423
250
  #@ transposh
251
  msgid "Allow translation of default language - useful for sites with more than one major language"
252
  msgstr "אפשר תרגום שפת ברירת המחדל - שימושי באתרים עם יותר משפה עיקרית אחת"
253
 
254
- #: wp/transposh_admin.php:430
255
  #@ transposh
256
  msgid "Enable search in translated languages"
257
  msgstr "אפשר חיפוש בשפות המתורגמות"
258
 
259
- #: wp/transposh_admin.php:432
260
  #@ transposh
261
  msgid "Allow search of translated languages, in those languages (and the original language)"
262
  msgstr "אפשר חיפוש בשפות המתורגמות, בשפות אלו (ובשפת המקור)"
263
 
264
- #: wp/transposh_admin.php:441
265
  #@ transposh
266
  msgid "Allow translation of permalinks and urls"
267
  msgstr "אפשר תרגום של קישורים קבועים וכתובות אינטרנט"
268
 
269
- #: wp/transposh_admin.php:459
270
  #@ transposh
271
  msgid "Enable automatic translation"
272
  msgstr "אפשר תרגום אוטומטי"
273
 
274
- #: wp/transposh_admin.php:461
275
  #@ transposh
276
  msgid "Allow automatic translation of pages"
277
  msgstr "אפשר תרגום אוטומטי של דפים"
278
 
279
- #: wp/transposh_admin.php:467
280
  #@ transposh
281
  msgid "Enable automatic translation after posting"
282
  msgstr "אפשר תרגום אוטומטי לאחר יצירת פוסט"
283
 
284
- #: wp/transposh_admin.php:469
285
  #@ transposh
286
  msgid "Do automatic translation immediately after a post has been published"
287
  msgstr "בצע תרגום אוטומטי מייד לאחר שפוסט מפורסם"
288
 
289
- #: wp/transposh_admin.php:474
290
  #@ transposh
291
  msgid "Select preferred auto translation engine"
292
  msgstr "בחר את מנוע התרגום האוטומטי המועדף"
293
 
294
- #: wp/transposh_admin.php:475
295
  #@ transposh
296
  msgid "Translation engine:"
297
  msgstr "מנוע תרגום:"
298
 
299
- #: wp/transposh_admin.php:477
300
  #@ transposh
301
  msgid "Google"
302
  msgstr "גוגל"
303
 
304
- #: wp/transposh_admin.php:478
305
  #@ transposh
306
  msgid "Bing"
307
  msgstr "בינג"
308
 
309
- #: wp/transposh_admin.php:488
310
  #@ transposh
311
  msgid "Rewrite URLs"
312
  msgstr "שיכתוב כתובות אינטרנט"
313
 
314
- #: wp/transposh_admin.php:499
315
  #@ transposh
316
  msgid "Add scripts to footer"
317
  msgstr "הוסף סקריפטים לתחתית הדף"
318
 
319
- #: wp/transposh_admin.php:502
320
  #@ transposh
321
  msgid "Push transposh scripts to footer of page instead of header, makes pages load faster. Requires that your theme should have proper footer support."
322
  msgstr "הכנס את הסקריפטים של טרנספוש לתחתית העמוד במקום לחלקו העליון, העמוד יטען מהר יותר. ערכת העיצוב חייבת להכיל תמיכה בחלק תחתון."
323
 
324
- #: wp/transposh_admin.php:508
325
  #@ transposh
326
  msgid "Auto detect language for users"
327
  msgstr "זהה שפה עבור המשתמשים באופן אוטומטי"
328
 
329
- #: wp/transposh_admin.php:511
330
  #@ transposh
331
  msgid "This enables auto detection of language used by the user as defined in the ACCEPT_LANGUAGES they send. This will redirect the first page accessed in the session to the same page with the detected language."
332
  msgstr "תכונה זו מאפשרת זיהוי אוטומטי של השפה בה משתמשים המשתמשים כפי שמוגדרת ב-ACCEPT_LANGUAGES אותו הם שולחים. תכונה זו תשלח את הדף הראשון אל דף זהה בשפה שזוהתה."
333
 
334
- #: wp/transposh_admin.php:521
335
  #@ transposh
336
  msgid "Delete all automated translations"
337
  msgstr "מחק את כל התרגומים האוטומטיים"
338
 
339
- #: wp/transposh_admin.php:522
340
  #@ transposh
341
  msgid "Delete automated translations older than 14 days"
342
  msgstr "מחק תרגומים אוטומטיים בני יותר מ-14 ימים"
343
 
344
- #: wp/transposh_admin.php:526
345
  #@ transposh
346
  msgid "Backup service for human translation"
347
  msgstr "שרות גיבוי לתרגום אנושי"
348
 
349
- #: wp/transposh_admin.php:527
350
  #@ transposh
351
  msgid "Enable daily backup"
352
  msgstr "אפשר גיבוי יומי"
353
 
354
- #: wp/transposh_admin.php:528
355
  #@ transposh
356
  msgid "Enable live backup"
357
  msgstr "אפשר גיבוי חי"
358
 
359
- #: wp/transposh_admin.php:529
360
  #@ transposh
361
  msgid "Disable backup (Can be run manually by clicking the button below)"
362
  msgstr "בטל גיבוי (ניתן להריץ ידנית על ידי לחיצה על הכפתור למטה)"
363
 
364
- #: wp/transposh_admin.php:530
365
  #@ transposh
366
  msgid "How to restore?"
367
  msgstr "איך לשחזר?"
368
 
369
- #: wp/transposh_admin.php:532
370
  #@ transposh
371
  msgid "Do Backup Now"
372
  msgstr "גבה עכשיו"
@@ -391,91 +361,91 @@ msgstr "שאלות נפוצות"
391
  msgid "Transposh control center"
392
  msgstr "מרכז השליטה של טרנספוש"
393
 
394
- #: wp/transposh_admin.php:439
395
  #@ transposh
396
  msgid "Enable url translation"
397
  msgstr "אפשר תרגום כתובות אינטרנט"
398
 
399
- #: wp/transposh_admin.php:439
400
- #: wp/transposh_admin.php:448
401
  #@ transposh
402
  msgid "experimental"
403
  msgstr "נסיוני"
404
 
405
- #: wp/transposh_admin.php:492
406
  #@ transposh
407
  msgid "Rewrite URLs to be search engine friendly, e.g. (http://transposh.org/<strong>en</strong>). Requires that permalinks will be enabled."
408
  msgstr "שכתוב כתובות אינטרנט כדי שיהיו ידידותיות למנועי חיפוש, למשל (http://transposh.org/<strong>en</strong>). יש חובה להפעיל קישורים קבועים."
409
 
410
- #: wp/transposh_db.php:531
411
  #@ transposh
412
  msgid "Database stats"
413
  msgstr "סטטיסטיקות בסיס הנתונים"
414
 
415
- #: wp/transposh_db.php:536
416
  #, php-format
417
  #@ transposh
418
  msgid "Total of <strong style=\"color:red\">%s</strong> translated phrases."
419
  msgstr "סך הכל <strong style=\"color:red\">%s</strong> מקטעים מתורגמים."
420
 
421
- #: wp/transposh_db.php:543
422
  #, php-format
423
  #@ transposh
424
  msgid "<strong>%1s</strong> has <strong style=\"color:red\">%2s</strong> human translated phrases."
425
  msgstr "ב-<strong>%1s</strong> ישנם <strong style=\"color:red\">%2s</strong> מקטעים מתורגמים על ידי בן אדם."
426
 
427
- #: wp/transposh_db.php:546
428
  #@ transposh
429
  msgid "Recent activity"
430
  msgstr "פעילות אחרונה"
431
 
432
- #: wp/transposh_db.php:551
433
  #, php-format
434
  #@ transposh
435
  msgid "On <strong>%1s</strong><br/>user <strong>%2s</strong> translated<br/>\"<strong>%3s</strong>\"<br/>to <strong style=\"color:red\">%4s</strong><br/>\"<strong>%5s</strong>\""
436
  msgstr "ב <strong>%1s</strong><br/>המשתמש <strong>%2s</strong> תרגם את<br/>\"<strong>%3s</strong>\"<br/>ל <strong style=\"color:red\">%4s</strong><br/>\"<strong>%5s</strong>\""
437
 
438
- #: wp/transposh_widget.php:333
439
  #@ transposh
440
  msgid "Style:"
441
  msgstr "סגנון:"
442
 
443
- #: wp/transposh_widget.php:342
444
  #@ transposh
445
  msgid "Effects:"
446
  msgstr "אפקטים:"
447
 
448
- #: wp/transposh_widget.php:344
449
  #@ transposh
450
  msgid "Show progress bar when a client triggers automatic translation"
451
  msgstr "הראה בר התקדמות בעת שמשתמש יוזם תרגום אוטומטי"
452
 
453
- #: wp/transposh_widget.php:344
454
  #@ transposh
455
  msgid "Show progress bar"
456
  msgstr "הצג בר התקדמות"
457
 
458
- #: wp/transposh_widget.php:346
459
  #@ transposh
460
  msgid "Widget will allow setting this language as user default"
461
  msgstr "הישומון יאפשר הגדרת שפה זו כברירת מחדל"
462
 
463
- #: wp/transposh_widget.php:346
464
  #@ transposh
465
  msgid "Allow user to set current language as default"
466
  msgstr "אפשר למשתמש לבחור את השפה הנוכחית כברירת מחדל"
467
 
468
- #: wp/transposh_widget.php:348
469
  #@ transposh
470
  msgid "Transposh logo will not appear on widget"
471
  msgstr "הלוגו של טרנספוש לא יופיע בישומון"
472
 
473
- #: wp/transposh_widget.php:348
474
  #@ transposh
475
  msgid "Remove transposh logo (see <a href=\"http://transposh.org/logoterms\">terms</a>)"
476
  msgstr "הסרת הלוגו של טרנספוש (ראה <a href=\"http://transposh.org/logoterms\">תנאים</a>)"
477
 
478
- #: wp/transposh_admin.php:530
479
  #@ transposh
480
  msgid "Service Key:"
481
  msgstr "מפתח שרות:"
@@ -517,7 +487,7 @@ msgstr "צוות טרנספוש"
517
  msgid "%VERSION%"
518
  msgstr ""
519
 
520
- #: transposh.php:753
521
  #@ default
522
  msgid "Settings"
523
  msgstr ""
@@ -527,13 +497,53 @@ msgstr ""
527
  msgid "Save Changes"
528
  msgstr ""
529
 
530
- #: wp/transposh_admin.php:448
531
  #@ transposh
532
  msgid "Enable gettext integration"
533
  msgstr "אפשר אינטגרציית gettext"
534
 
535
- #: wp/transposh_admin.php:450
536
  #@ transposh
537
  msgid "Enable integration of Transposh with existing gettext interface (.po/.mo files)"
538
  msgstr "אפשר אינטגרציה של טרנספוש עם ממשק gettext הקיים (קבצי .po/.mo)"
539
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  #: wp/transposh_postpublish.php:50
102
  #: wp/transposh_widget.php:88
103
  #: wp/transposh_widget.php:91
104
+ #: wp/transposh_widget.php:252
105
  #@ transposh
106
  msgid "Transposh"
107
  msgstr "טרנספוש"
116
  msgid "Translate All Now"
117
  msgstr "תרגם הכל עכשיו"
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  #: wp/transposh_admin.php:278
120
  #@ transposh
121
  msgid "Plugin Homepage"
151
  msgid "Language supported by bing translate"
152
  msgstr "שפה נתמכת ע\"י המתרגם של בינג"
153
 
154
+ #: wp/transposh_admin.php:383
155
  #@ transposh
156
  msgid "Language is written from right to left"
157
  msgstr "שפה הנכתבת מימין לשמאל"
158
 
159
+ #: wp/transposh_admin.php:388
160
  #@ transposh
161
  msgid "Display options:"
162
  msgstr "הגדרות תצוגה:"
163
 
164
+ #: wp/transposh_admin.php:389
165
  #@ transposh
166
  msgid "Toggle names of languages between English and Original"
167
  msgstr "שנה את הצגת שפות השפות בין אנגלית למקןר"
168
 
169
+ #: wp/transposh_admin.php:390
170
  #@ transposh
171
  msgid "Make all languages active"
172
  msgstr "הפוך את כל השפות לפעילות"
173
 
174
+ #: wp/transposh_admin.php:391
175
  #@ transposh
176
  msgid "Sort by language name"
177
  msgstr "מיין לפי שם השפה"
178
 
179
+ #: wp/transposh_admin.php:392
180
  #@ transposh
181
  msgid "Sort by lSO code"
182
  msgstr "מיין לפי קוד ה-ISO"
183
 
184
+ #: wp/transposh_admin.php:393
185
  #@ transposh
186
  msgid "Legend:"
187
  msgstr "מקרא:"
188
 
189
+ #: wp/transposh_admin.php:393
190
  #@ transposh
191
  msgid "Green - active"
192
  msgstr "ירוק - פעיל"
193
 
194
+ #: wp/transposh_admin.php:393
195
  #@ transposh
196
  msgid "Yellow - translateable (only translators will see this language)"
197
  msgstr "צהוב - ניתן לתרגום (רק מתרגמים יראו את השפה)"
198
 
199
+ #: wp/transposh_admin.php:393
200
  #@ transposh
201
  msgid "blank - inactive"
202
  msgstr "ללא צבע - לא פעיל"
203
 
204
+ #: wp/transposh_admin.php:410
205
  #@ transposh
206
  msgid "Who can translate ?"
207
  msgstr "מי יכול לתרגם?"
208
 
209
+ #: wp/transposh_admin.php:417
210
  #@ transposh
211
  msgid "Anonymous"
212
  msgstr "אנונימי"
213
 
214
+ #: wp/transposh_admin.php:423
215
  #@ transposh
216
  msgid "Enable default language translation"
217
  msgstr "אפשר תרגום של שפת ברירת המחדל"
218
 
219
+ #: wp/transposh_admin.php:425
220
  #@ transposh
221
  msgid "Allow translation of default language - useful for sites with more than one major language"
222
  msgstr "אפשר תרגום שפת ברירת המחדל - שימושי באתרים עם יותר משפה עיקרית אחת"
223
 
224
+ #: wp/transposh_admin.php:432
225
  #@ transposh
226
  msgid "Enable search in translated languages"
227
  msgstr "אפשר חיפוש בשפות המתורגמות"
228
 
229
+ #: wp/transposh_admin.php:434
230
  #@ transposh
231
  msgid "Allow search of translated languages, in those languages (and the original language)"
232
  msgstr "אפשר חיפוש בשפות המתורגמות, בשפות אלו (ובשפת המקור)"
233
 
234
+ #: wp/transposh_admin.php:443
235
  #@ transposh
236
  msgid "Allow translation of permalinks and urls"
237
  msgstr "אפשר תרגום של קישורים קבועים וכתובות אינטרנט"
238
 
239
+ #: wp/transposh_admin.php:461
240
  #@ transposh
241
  msgid "Enable automatic translation"
242
  msgstr "אפשר תרגום אוטומטי"
243
 
244
+ #: wp/transposh_admin.php:463
245
  #@ transposh
246
  msgid "Allow automatic translation of pages"
247
  msgstr "אפשר תרגום אוטומטי של דפים"
248
 
249
+ #: wp/transposh_admin.php:469
250
  #@ transposh
251
  msgid "Enable automatic translation after posting"
252
  msgstr "אפשר תרגום אוטומטי לאחר יצירת פוסט"
253
 
254
+ #: wp/transposh_admin.php:471
255
  #@ transposh
256
  msgid "Do automatic translation immediately after a post has been published"
257
  msgstr "בצע תרגום אוטומטי מייד לאחר שפוסט מפורסם"
258
 
259
+ #: wp/transposh_admin.php:476
260
  #@ transposh
261
  msgid "Select preferred auto translation engine"
262
  msgstr "בחר את מנוע התרגום האוטומטי המועדף"
263
 
264
+ #: wp/transposh_admin.php:477
265
  #@ transposh
266
  msgid "Translation engine:"
267
  msgstr "מנוע תרגום:"
268
 
269
+ #: wp/transposh_admin.php:479
270
  #@ transposh
271
  msgid "Google"
272
  msgstr "גוגל"
273
 
274
+ #: wp/transposh_admin.php:480
275
  #@ transposh
276
  msgid "Bing"
277
  msgstr "בינג"
278
 
279
+ #: wp/transposh_admin.php:490
280
  #@ transposh
281
  msgid "Rewrite URLs"
282
  msgstr "שיכתוב כתובות אינטרנט"
283
 
284
+ #: wp/transposh_admin.php:501
285
  #@ transposh
286
  msgid "Add scripts to footer"
287
  msgstr "הוסף סקריפטים לתחתית הדף"
288
 
289
+ #: wp/transposh_admin.php:504
290
  #@ transposh
291
  msgid "Push transposh scripts to footer of page instead of header, makes pages load faster. Requires that your theme should have proper footer support."
292
  msgstr "הכנס את הסקריפטים של טרנספוש לתחתית העמוד במקום לחלקו העליון, העמוד יטען מהר יותר. ערכת העיצוב חייבת להכיל תמיכה בחלק תחתון."
293
 
294
+ #: wp/transposh_admin.php:510
295
  #@ transposh
296
  msgid "Auto detect language for users"
297
  msgstr "זהה שפה עבור המשתמשים באופן אוטומטי"
298
 
299
+ #: wp/transposh_admin.php:513
300
  #@ transposh
301
  msgid "This enables auto detection of language used by the user as defined in the ACCEPT_LANGUAGES they send. This will redirect the first page accessed in the session to the same page with the detected language."
302
  msgstr "תכונה זו מאפשרת זיהוי אוטומטי של השפה בה משתמשים המשתמשים כפי שמוגדרת ב-ACCEPT_LANGUAGES אותו הם שולחים. תכונה זו תשלח את הדף הראשון אל דף זהה בשפה שזוהתה."
303
 
304
+ #: wp/transposh_admin.php:523
305
  #@ transposh
306
  msgid "Delete all automated translations"
307
  msgstr "מחק את כל התרגומים האוטומטיים"
308
 
309
+ #: wp/transposh_admin.php:524
310
  #@ transposh
311
  msgid "Delete automated translations older than 14 days"
312
  msgstr "מחק תרגומים אוטומטיים בני יותר מ-14 ימים"
313
 
314
+ #: wp/transposh_admin.php:529
315
  #@ transposh
316
  msgid "Backup service for human translation"
317
  msgstr "שרות גיבוי לתרגום אנושי"
318
 
319
+ #: wp/transposh_admin.php:530
320
  #@ transposh
321
  msgid "Enable daily backup"
322
  msgstr "אפשר גיבוי יומי"
323
 
324
+ #: wp/transposh_admin.php:531
325
  #@ transposh
326
  msgid "Enable live backup"
327
  msgstr "אפשר גיבוי חי"
328
 
329
+ #: wp/transposh_admin.php:532
330
  #@ transposh
331
  msgid "Disable backup (Can be run manually by clicking the button below)"
332
  msgstr "בטל גיבוי (ניתן להריץ ידנית על ידי לחיצה על הכפתור למטה)"
333
 
334
+ #: wp/transposh_admin.php:533
335
  #@ transposh
336
  msgid "How to restore?"
337
  msgstr "איך לשחזר?"
338
 
339
+ #: wp/transposh_admin.php:535
340
  #@ transposh
341
  msgid "Do Backup Now"
342
  msgstr "גבה עכשיו"
361
  msgid "Transposh control center"
362
  msgstr "מרכז השליטה של טרנספוש"
363
 
364
+ #: wp/transposh_admin.php:441
365
  #@ transposh
366
  msgid "Enable url translation"
367
  msgstr "אפשר תרגום כתובות אינטרנט"
368
 
369
+ #: wp/transposh_admin.php:441
370
+ #: wp/transposh_admin.php:450
371
  #@ transposh
372
  msgid "experimental"
373
  msgstr "נסיוני"
374
 
375
+ #: wp/transposh_admin.php:494
376
  #@ transposh
377
  msgid "Rewrite URLs to be search engine friendly, e.g. (http://transposh.org/<strong>en</strong>). Requires that permalinks will be enabled."
378
  msgstr "שכתוב כתובות אינטרנט כדי שיהיו ידידותיות למנועי חיפוש, למשל (http://transposh.org/<strong>en</strong>). יש חובה להפעיל קישורים קבועים."
379
 
380
+ #: wp/transposh_db.php:635
381
  #@ transposh
382
  msgid "Database stats"
383
  msgstr "סטטיסטיקות בסיס הנתונים"
384
 
385
+ #: wp/transposh_db.php:640
386
  #, php-format
387
  #@ transposh
388
  msgid "Total of <strong style=\"color:red\">%s</strong> translated phrases."
389
  msgstr "סך הכל <strong style=\"color:red\">%s</strong> מקטעים מתורגמים."
390
 
391
+ #: wp/transposh_db.php:647
392
  #, php-format
393
  #@ transposh
394
  msgid "<strong>%1s</strong> has <strong style=\"color:red\">%2s</strong> human translated phrases."
395
  msgstr "ב-<strong>%1s</strong> ישנם <strong style=\"color:red\">%2s</strong> מקטעים מתורגמים על ידי בן אדם."
396
 
397
+ #: wp/transposh_db.php:650
398
  #@ transposh
399
  msgid "Recent activity"
400
  msgstr "פעילות אחרונה"
401
 
402
+ #: wp/transposh_db.php:655
403
  #, php-format
404
  #@ transposh
405
  msgid "On <strong>%1s</strong><br/>user <strong>%2s</strong> translated<br/>\"<strong>%3s</strong>\"<br/>to <strong style=\"color:red\">%4s</strong><br/>\"<strong>%5s</strong>\""
406
  msgstr "ב <strong>%1s</strong><br/>המשתמש <strong>%2s</strong> תרגם את<br/>\"<strong>%3s</strong>\"<br/>ל <strong style=\"color:red\">%4s</strong><br/>\"<strong>%5s</strong>\""
407
 
408
+ #: wp/transposh_widget.php:363
409
  #@ transposh
410
  msgid "Style:"
411
  msgstr "סגנון:"
412
 
413
+ #: wp/transposh_widget.php:372
414
  #@ transposh
415
  msgid "Effects:"
416
  msgstr "אפקטים:"
417
 
418
+ #: wp/transposh_widget.php:374
419
  #@ transposh
420
  msgid "Show progress bar when a client triggers automatic translation"
421
  msgstr "הראה בר התקדמות בעת שמשתמש יוזם תרגום אוטומטי"
422
 
423
+ #: wp/transposh_widget.php:374
424
  #@ transposh
425
  msgid "Show progress bar"
426
  msgstr "הצג בר התקדמות"
427
 
428
+ #: wp/transposh_widget.php:376
429
  #@ transposh
430
  msgid "Widget will allow setting this language as user default"
431
  msgstr "הישומון יאפשר הגדרת שפה זו כברירת מחדל"
432
 
433
+ #: wp/transposh_widget.php:376
434
  #@ transposh
435
  msgid "Allow user to set current language as default"
436
  msgstr "אפשר למשתמש לבחור את השפה הנוכחית כברירת מחדל"
437
 
438
+ #: wp/transposh_widget.php:378
439
  #@ transposh
440
  msgid "Transposh logo will not appear on widget"
441
  msgstr "הלוגו של טרנספוש לא יופיע בישומון"
442
 
443
+ #: wp/transposh_widget.php:378
444
  #@ transposh
445
  msgid "Remove transposh logo (see <a href=\"http://transposh.org/logoterms\">terms</a>)"
446
  msgstr "הסרת הלוגו של טרנספוש (ראה <a href=\"http://transposh.org/logoterms\">תנאים</a>)"
447
 
448
+ #: wp/transposh_admin.php:533
449
  #@ transposh
450
  msgid "Service Key:"
451
  msgstr "מפתח שרות:"
487
  msgid "%VERSION%"
488
  msgstr ""
489
 
490
+ #: transposh.php:771
491
  #@ default
492
  msgid "Settings"
493
  msgstr ""
497
  msgid "Save Changes"
498
  msgstr ""
499
 
500
+ #: wp/transposh_admin.php:450
501
  #@ transposh
502
  msgid "Enable gettext integration"
503
  msgstr "אפשר אינטגרציית gettext"
504
 
505
+ #: wp/transposh_admin.php:452
506
  #@ transposh
507
  msgid "Enable integration of Transposh with existing gettext interface (.po/.mo files)"
508
  msgstr "אפשר אינטגרציה של טרנספוש עם ממשק gettext הקיים (קבצי .po/.mo)"
509
 
510
+ #: wp/transposh_admin.php:381
511
+ #@ transposh
512
+ msgid "Language supported by apertium translate"
513
+ msgstr "שפה נתמכת ע\"י המתרגם של אפרטיום"
514
+
515
+ #: wp/transposh_admin.php:525
516
+ #@ transposh
517
+ msgid "Attempt to fix errors caused by previous versions - please backup first"
518
+ msgstr "נסה לתקן שגיאות שנגרמו על ידי גרסאות קודמות - אנא גבה קודם"
519
+
520
+ #: wp/transposh_widget.php:255
521
+ #@ transposh
522
+ msgid "translation plugin for wordpress"
523
+ msgstr "תוסף התרגום לוורדפרס"
524
+
525
+ #: wp/transposh_widget.php:258
526
+ #@ transposh
527
+ msgid "wordpress translation plugin"
528
+ msgstr "תוסף תרגום לוורדפרס"
529
+
530
+ #: wp/transposh_widget.php:261
531
+ #@ transposh
532
+ msgid "translate your blog to 60+ languages"
533
+ msgstr "תרגם את הבלוג שלך ל-60 שפות"
534
+
535
+ #: wp/transposh_widget.php:264
536
+ #@ transposh
537
+ msgid "website crowdsourcing translation plugin"
538
+ msgstr "תוסף מיקור המון (crowdsourcing) לתרגום אתרים"
539
+
540
+ #: wp/transposh_widget.php:267
541
+ #@ transposh
542
+ msgid "google translate and bing translate plugin for wordpress"
543
+ msgstr "תוסף תרגום גוגל ובינג לוורדפרס"
544
+
545
+ #: wp/transposh_widget.php:381
546
+ #@ transposh
547
+ msgid "Edit interface (and progress bar) theme:"
548
+ msgstr "ערכת עיצוב ממשק עריכה (ובר התקדמות):"
549
+
readme.txt CHANGED
@@ -3,14 +3,16 @@ Contributors: oferwald
3
  Donate link: http://transposh.org/donate/
4
  Tags: translation, widget, filter, buddypress, bilingual, multilingual, transposh, translate, language, crowdsourcing, context, wiki, RTL, Hebrew, Spanish, French, Russian, English, Arabic, Portuguese
5
  Requires at least: 2.8
6
- Tested up to: 3.0.3
7
- Stable tag: 0.6.7
8
 
9
  Transposh filter allows in context quick translation of websites, it allows you to crowd-source the translation to your users
10
 
11
  == Description ==
12
  Transposh translation filter for WordPress offers a unique approach to blog translation. It allows your blog to combine automatic translation with human translation aided by your users with an easy to use in-context interface.
13
 
 
 
14
  ***Transposh includes the following features:***
15
 
16
  * Support for any language - including RTL/LTR layouts
@@ -18,10 +20,10 @@ Transposh translation filter for WordPress offers a unique approach to blog tran
18
  * Multiple selection for widget appearances - with pluggable widgets
19
  * Translation of external plugins without a need for .po/.mo files
20
  * Automatic translation mode for all content (including comments!)
21
- * Use either Google Translate or MS Translate backends - 59 languages supported!
22
  * Automatic translation can be triggered on demand by the readers or on the server side
23
  * RSS feeds are translated too
24
- * Takes care of hidden elements, link tags and titles
25
  * Translated languages are searchable
26
  * Buddypress integration
27
 
@@ -165,6 +167,8 @@ images based on the current language
165
  5. Widget style selection box, with three basic appearances, flags below (in Hebrew), language selection on the top right and language list on the bottom right.
166
 
167
  == Upgrade Notice ==
 
 
168
  = 0.6.6 =
169
  Fixed two XSS vulnerabilities
170
  = 0.6.3 =
@@ -195,6 +199,23 @@ This version provides integration with google-sitemaps-xml and wp-super-cache
195
  This version allows sorting of languages within the widget
196
 
197
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  = 2010/12/17 - 0.6.7 =
199
  * Allow Google to attempt a retranslation if it is unable to detect source language at first attempt
200
  * Direct links to static files have a good chance of being answered now (thanks krizzz)
3
  Donate link: http://transposh.org/donate/
4
  Tags: translation, widget, filter, buddypress, bilingual, multilingual, transposh, translate, language, crowdsourcing, context, wiki, RTL, Hebrew, Spanish, French, Russian, English, Arabic, Portuguese
5
  Requires at least: 2.8
6
+ Tested up to: 3.1
7
+ Stable tag: 0.7.0
8
 
9
  Transposh filter allows in context quick translation of websites, it allows you to crowd-source the translation to your users
10
 
11
  == Description ==
12
  Transposh translation filter for WordPress offers a unique approach to blog translation. It allows your blog to combine automatic translation with human translation aided by your users with an easy to use in-context interface.
13
 
14
+ [youtube http://www.youtube.com/watch?v=ktGtPb6SB34]
15
+
16
  ***Transposh includes the following features:***
17
 
18
  * Support for any language - including RTL/LTR layouts
20
  * Multiple selection for widget appearances - with pluggable widgets
21
  * Translation of external plugins without a need for .po/.mo files
22
  * Automatic translation mode for all content (including comments!)
23
+ * Use either Google Translate,MS Translate or Apertium backends - 60 languages supported!
24
  * Automatic translation can be triggered on demand by the readers or on the server side
25
  * RSS feeds are translated too
26
+ * Takes care of hidden elements, link tags, meta contents and titles
27
  * Translated languages are searchable
28
  * Buddypress integration
29
 
167
  5. Widget style selection box, with three basic appearances, flags below (in Hebrew), language selection on the top right and language list on the bottom right.
168
 
169
  == Upgrade Notice ==
170
+ = 0.7.0 =
171
+ New edit interface, tons of other fixes
172
  = 0.6.6 =
173
  Fixed two XSS vulnerabilities
174
  = 0.6.3 =
199
  This version allows sorting of languages within the widget
200
 
201
  == Changelog ==
202
+ = 2011/01/11 - 0.7.0 =
203
+ * Revamped edit interface
204
+ * Allow simple localization of interface
205
+ * Go to previous/next translation item
206
+ * Focus on phrase being translated
207
+ * Allow viewing original in other language if it was translated previously by a human (thanks [Hanan](http://www.galgalyarok.org/))
208
+ * Allow approval of auto translation
209
+ * Support for virtual keyboard from http://www.greywyvern.com/code/javascript/keyboard
210
+ * Support theming of interface using [themeroller](http://ui-dev.jquery.com/themeroller/) themes
211
+ * Bad translations may be deleted using the history log dialog
212
+ * Cleaned close confirmation dialog
213
+ * First plugin to date to support Esperanto using Apertium (from sites in Spanish or English)
214
+ * Allow translations of meta tags
215
+ * Database cleanup function added
216
+ * Changed collation of database to UTF8_bin in order to support different translations for different capitalizations (hello -> hola, Hello -> Hola)
217
+ * Hebrew translation of front end thanks [Amir](http://colnect.com/he)
218
+ * Spanish translation of front end thanks [Ignacio](http://colnect.com/es/collectors/collector/iflvico)
219
  = 2010/12/17 - 0.6.7 =
220
  * Allow Google to attempt a retranslation if it is unable to detect source language at first attempt
221
  * Direct links to static files have a good chance of being answered now (thanks krizzz)
transposh.php CHANGED
@@ -5,7 +5,7 @@
5
  Plugin URI: http://transposh.org/
6
  Description: Translation filter for WordPress, After enabling please set languages at the <a href="options-general.php?page=transposh">the options page</a> Want to help? visit our development site at <a href="http://trac.transposh.org/">trac.transposh.org</a>.
7
  Author: Team Transposh
8
- Version: 0.6.7
9
  Author URI: http://transposh.org/
10
  License: GPL (http://www.gnu.org/licenses/gpl.txt)
11
  Text Domain: transposh
@@ -13,14 +13,14 @@
13
  */
14
 
15
  /*
16
- * Transposh v0.6.7
17
  * http://transposh.org/
18
  *
19
- * Copyright 2010, Team Transposh
20
  * Licensed under the GPL Version 2 or higher.
21
  * http://transposh.org/license
22
  *
23
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
24
  */
25
 
26
  //avoid direct calls to this file where wp core files not present
@@ -650,6 +650,8 @@ class transposh_plugin {
650
  $script_params['msn'] = 1;
651
  if (in_array($this->target_language, transposh_consts::$google_languages))
652
  $script_params['google'] = 1;
 
 
653
  if (function_exists('curl_init') && in_array($this->target_language, transposh_consts::$google_proxied_languages))
654
  $script_params['tgp'] = 1;
655
  if ($this->options->get_widget_progressbar())
@@ -660,12 +662,15 @@ class transposh_plugin {
660
  // load translations needed for edit interface
661
  if ($this->edit_mode) {
662
  $script_params['edit'] = 1;
663
- $script_params['edit_box_title'] = _x('Edit Translation', 'Edit Interface', TRANSPOSH_TEXT_DOMAIN);
664
- $script_params['edit_box_translate'] = _x('Translate', 'Edit Interface', TRANSPOSH_TEXT_DOMAIN);
665
- $script_params['edit_box_history'] = _x('History', 'Edit Interface', TRANSPOSH_TEXT_DOMAIN);
666
- $script_params['edit_box_original'] = _x('Original Text', 'Edit Interface', TRANSPOSH_TEXT_DOMAIN);
667
- $script_params['edit_box_translate_to'] = _x('Translate To', 'Edit Interface', TRANSPOSH_TEXT_DOMAIN);
 
 
668
  }
 
669
  // 'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};'
670
  wp_localize_script('transposh', 't_jp', $script_params);
671
 
5
  Plugin URI: http://transposh.org/
6
  Description: Translation filter for WordPress, After enabling please set languages at the <a href="options-general.php?page=transposh">the options page</a> Want to help? visit our development site at <a href="http://trac.transposh.org/">trac.transposh.org</a>.
7
  Author: Team Transposh
8
+ Version: 0.7.0
9
  Author URI: http://transposh.org/
10
  License: GPL (http://www.gnu.org/licenses/gpl.txt)
11
  Text Domain: transposh
13
  */
14
 
15
  /*
16
+ * Transposh v0.7.0
17
  * http://transposh.org/
18
  *
19
+ * Copyright 2011, Team Transposh
20
  * Licensed under the GPL Version 2 or higher.
21
  * http://transposh.org/license
22
  *
23
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
24
  */
25
 
26
  //avoid direct calls to this file where wp core files not present
650
  $script_params['msn'] = 1;
651
  if (in_array($this->target_language, transposh_consts::$google_languages))
652
  $script_params['google'] = 1;
653
+ if (in_array($this->target_language, transposh_consts::$apertium_languages))
654
+ $script_params['apertium'] = 1;
655
  if (function_exists('curl_init') && in_array($this->target_language, transposh_consts::$google_proxied_languages))
656
  $script_params['tgp'] = 1;
657
  if ($this->options->get_widget_progressbar())
662
  // load translations needed for edit interface
663
  if ($this->edit_mode) {
664
  $script_params['edit'] = 1;
665
+ if (file_exists($this->transposh_plugin_dir . TRANSPOSH_DIR_JS . '/l/' . $this->target_language . '.js')) {
666
+ $script_params['locale'] = 1;
667
+ }
668
+ }
669
+ // set theme when it is needed
670
+ if ($this->options->get_widget_progressbar() || $this->edit_mode) {
671
+ $script_params['theme'] = $this->options->get_widget_theme();
672
  }
673
+
674
  // 'l10n_print_after' => 'try{convertEntities(inlineEditL10n);}catch(e){};'
675
  wp_localize_script('transposh', 't_jp', $script_params);
676
 
widgets/default/tpw_default.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /*
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /*
widgets/dropdown/tpw_image_dropdown.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /**
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /**
widgets/flags/flags60.png ADDED
Binary file
widgets/flags/tpw_flags.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /**
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /**
widgets/flags/tpw_flags_css.css CHANGED
@@ -29,7 +29,7 @@
29
 
30
  /* define the .css sprites here */
31
  .trf {
32
- background-image:url(flags59.png);
33
  height:11px;
34
  width:16px;
35
  background-repeat:no-repeat;
@@ -52,46 +52,47 @@
52
  .trf-cz {background-position: -312px 0}
53
  .trf-dk {background-position: -336px 0}
54
  .trf-nl {background-position: -360px 0}
55
- .trf-ee {background-position: -384px 0}
56
- .trf-fi {background-position: -408px 0}
57
- .trf-fr {background-position: -432px 0}
58
- .trf-galicia {background-position: -456px 0}
59
- .trf-ge {background-position: -480px 0}
60
- .trf-de {background-position: -504px 0}
61
- .trf-gr {background-position: -528px 0}
62
- .trf-ht {background-position: -552px 0}
63
- .trf-il {background-position: -576px 0}
64
- .trf-in {background-position: -600px 0}
65
- .trf-hu {background-position: -624px 0}
66
- .trf-is {background-position: -648px 0}
67
- .trf-id {background-position: -672px 0}
68
- .trf-ie {background-position: -696px 0}
69
- .trf-it {background-position: -720px 0}
70
- .trf-jp {background-position: -744px 0}
71
- .trf-kr {background-position: -768px 0}
72
- .trf-va {background-position: -792px 0}
73
- .trf-lv {background-position: -816px 0}
74
- .trf-lt {background-position: -840px 0}
75
- .trf-mk {background-position: -864px 0}
76
- .trf-my {background-position: -888px 0}
77
- .trf-mt {background-position: -912px 0}
78
- .trf-no {background-position: -936px 0}
79
- .trf-ir {background-position: -960px 0}
80
- .trf-pl {background-position: -984px 0}
81
- .trf-pt {background-position: -1008px 0}
82
- .trf-ro {background-position: -1032px 0}
83
- .trf-ru {background-position: -1056px 0}
84
- .trf-rs {background-position: -1080px 0}
85
- .trf-sk {background-position: -1104px 0}
86
- .trf-si {background-position: -1128px 0}
87
- .trf-es {background-position: -1152px 0}
88
- .trf-ke {background-position: -1176px 0}
89
- .trf-se {background-position: -1200px 0}
90
- .trf-ph {background-position: -1224px 0}
91
- .trf-th {background-position: -1248px 0}
92
- .trf-tr {background-position: -1272px 0}
93
- .trf-ua {background-position: -1296px 0}
94
- .trf-pk {background-position: -1320px 0}
95
- .trf-vn {background-position: -1344px 0}
96
- .trf-wales {background-position: -1368px 0}
97
- .trf-europeanunion {background-position: -1392px 0}
 
29
 
30
  /* define the .css sprites here */
31
  .trf {
32
+ background-image:url(flags60.png);
33
  height:11px;
34
  width:16px;
35
  background-repeat:no-repeat;
52
  .trf-cz {background-position: -312px 0}
53
  .trf-dk {background-position: -336px 0}
54
  .trf-nl {background-position: -360px 0}
55
+ .trf-esperanto {background-position: -384px 0}
56
+ .trf-ee {background-position: -408px 0}
57
+ .trf-fi {background-position: -432px 0}
58
+ .trf-fr {background-position: -456px 0}
59
+ .trf-galicia {background-position: -480px 0}
60
+ .trf-ge {background-position: -504px 0}
61
+ .trf-de {background-position: -528px 0}
62
+ .trf-gr {background-position: -552px 0}
63
+ .trf-ht {background-position: -576px 0}
64
+ .trf-il {background-position: -600px 0}
65
+ .trf-in {background-position: -624px 0}
66
+ .trf-hu {background-position: -648px 0}
67
+ .trf-is {background-position: -672px 0}
68
+ .trf-id {background-position: -696px 0}
69
+ .trf-ie {background-position: -720px 0}
70
+ .trf-it {background-position: -744px 0}
71
+ .trf-jp {background-position: -768px 0}
72
+ .trf-kr {background-position: -792px 0}
73
+ .trf-va {background-position: -816px 0}
74
+ .trf-lv {background-position: -840px 0}
75
+ .trf-lt {background-position: -864px 0}
76
+ .trf-mk {background-position: -888px 0}
77
+ .trf-my {background-position: -912px 0}
78
+ .trf-mt {background-position: -936px 0}
79
+ .trf-no {background-position: -960px 0}
80
+ .trf-ir {background-position: -984px 0}
81
+ .trf-pl {background-position: -1008px 0}
82
+ .trf-pt {background-position: -1032px 0}
83
+ .trf-ro {background-position: -1056px 0}
84
+ .trf-ru {background-position: -1080px 0}
85
+ .trf-rs {background-position: -1104px 0}
86
+ .trf-sk {background-position: -1128px 0}
87
+ .trf-si {background-position: -1152px 0}
88
+ .trf-es {background-position: -1176px 0}
89
+ .trf-ke {background-position: -1200px 0}
90
+ .trf-se {background-position: -1224px 0}
91
+ .trf-ph {background-position: -1248px 0}
92
+ .trf-th {background-position: -1272px 0}
93
+ .trf-tr {background-position: -1296px 0}
94
+ .trf-ua {background-position: -1320px 0}
95
+ .trf-pk {background-position: -1344px 0}
96
+ .trf-vn {background-position: -1368px 0}
97
+ .trf-wales {background-position: -1392px 0}
98
+ .trf-europeanunion {background-position: -1416px 0}
widgets/flags/tpw_flags_css.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /**
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /**
widgets/flagslist/tpw_list_with_flags.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /**
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /**
widgets/flagslist/tpw_list_with_flags_css.php CHANGED
@@ -11,14 +11,14 @@
11
  */
12
 
13
  /*
14
- * Transposh v0.6.7
15
  * http://transposh.org/
16
  *
17
- * Copyright 2010, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
22
  */
23
 
24
  /**
11
  */
12
 
13
  /*
14
+ * Transposh v0.7.0
15
  * http://transposh.org/
16
  *
17
+ * Copyright 2011, Team Transposh
18
  * Licensed under the GPL Version 2 or higher.
19
  * http://transposh.org/license
20
  *
21
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
22
  */
23
 
24
  /**
wp/transposh_3rdparty.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
wp/transposh_admin.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
@@ -377,6 +377,8 @@ class transposh_plugin_admin {
377
  echo '<img width="16" height="16" alt="g" class="logoicon" title="' . esc_attr__('Language supported by google translate', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/googleicon.png"/>';
378
  if (in_array($langcode, transposh_consts::$bing_languages))
379
  echo '<img width="16" height="16" alt="b" class="logoicon" title="' . esc_attr__('Language supported by bing translate', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/bingicon.png"/>';
 
 
380
  if (in_array($langcode, transposh_consts::$rtl_languages))
381
  echo '<img width="16" height="16" alt="r" class="logoicon" title="' . esc_attr__('Language is written from right to left', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/rtlicon.png"/>';
382
  echo '</li>';
@@ -516,10 +518,11 @@ class transposh_plugin_admin {
516
 
517
  function on_contentbox_database_content($data) {
518
  /*
519
- * Insert two buttons allowing removal of automated translations from database
520
  */
521
  echo '<div style="margin:10px 0"><a id="transposh-clean-auto" href="#" nonce="' . wp_create_nonce('transposh-clean') . '" class="button">' . __('Delete all automated translations', TRANSPOSH_TEXT_DOMAIN) . '</a></div>';
522
  echo '<div style="margin:10px 0"><a id="transposh-clean-auto14" href="#" nonce="' . wp_create_nonce('transposh-clean') . '" class="button">' . __('Delete automated translations older than 14 days', TRANSPOSH_TEXT_DOMAIN) . '</a></div>';
 
523
  }
524
 
525
  function on_contentbox_community_content($data) {
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
377
  echo '<img width="16" height="16" alt="g" class="logoicon" title="' . esc_attr__('Language supported by google translate', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/googleicon.png"/>';
378
  if (in_array($langcode, transposh_consts::$bing_languages))
379
  echo '<img width="16" height="16" alt="b" class="logoicon" title="' . esc_attr__('Language supported by bing translate', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/bingicon.png"/>';
380
+ if (in_array($langcode, transposh_consts::$apertium_languages))
381
+ echo '<img width="16" height="16" alt="a" class="logoicon" title="' . esc_attr__('Language supported by apertium translate', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/apertiumicon.png"/>';
382
  if (in_array($langcode, transposh_consts::$rtl_languages))
383
  echo '<img width="16" height="16" alt="r" class="logoicon" title="' . esc_attr__('Language is written from right to left', TRANSPOSH_TEXT_DOMAIN) . '" src="' . $this->transposh->transposh_plugin_url . '/' . TRANSPOSH_DIR_IMG . '/rtlicon.png"/>';
384
  echo '</li>';
518
 
519
  function on_contentbox_database_content($data) {
520
  /*
521
+ * Insert buttons allowing removal of automated translations from database and maintenence
522
  */
523
  echo '<div style="margin:10px 0"><a id="transposh-clean-auto" href="#" nonce="' . wp_create_nonce('transposh-clean') . '" class="button">' . __('Delete all automated translations', TRANSPOSH_TEXT_DOMAIN) . '</a></div>';
524
  echo '<div style="margin:10px 0"><a id="transposh-clean-auto14" href="#" nonce="' . wp_create_nonce('transposh-clean') . '" class="button">' . __('Delete automated translations older than 14 days', TRANSPOSH_TEXT_DOMAIN) . '</a></div>';
525
+ echo '<div style="margin:10px 0"><a id="transposh-maint" href="#" nonce="' . wp_create_nonce('transposh-clean') . '" class="button">' . __('Attempt to fix errors caused by previous versions - please backup first', TRANSPOSH_TEXT_DOMAIN) . '</a></div>';
526
  }
527
 
528
  function on_contentbox_community_content($data) {
wp/transposh_ajax.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
@@ -44,8 +44,16 @@ if (isset($_POST['translation_posted'])) {
44
  }
45
  // getting translation history
46
  elseif (isset($_GET['tr_token_hist'])) {
 
 
 
 
47
  $my_transposh_plugin->database->get_translation_history($_GET['tr_token_hist'], $_GET['lang']);
48
  }
 
 
 
 
49
  // getting phrases of a post (if we are in admin)
50
  elseif (isset($_GET['tr_phrases_post'])) {
51
  $my_transposh_plugin->postpublish->get_post_phrases($_GET['post']);
@@ -106,4 +114,10 @@ elseif (isset($_GET['cleanup'])) {
106
  check_ajax_referer('transposh-clean', 'nonce');
107
  $my_transposh_plugin->database->cleanup($_GET['days']);
108
  }
 
 
 
 
 
 
109
  ?>
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
44
  }
45
  // getting translation history
46
  elseif (isset($_GET['tr_token_hist'])) {
47
+ // deleting
48
+ if (isset($_GET['action']) && $_GET['action'] == 'delete') {
49
+ $my_transposh_plugin->database->del_translation_history($_GET['tr_token_hist'], $_GET['lang'], $_GET['timestamp']);
50
+ }
51
  $my_transposh_plugin->database->get_translation_history($_GET['tr_token_hist'], $_GET['lang']);
52
  }
53
+ // getting translation alternates
54
+ elseif (isset($_GET['tr_token_alt'])) {
55
+ $my_transposh_plugin->database->get_translation_alt($_GET['tr_token_alt']);
56
+ }
57
  // getting phrases of a post (if we are in admin)
58
  elseif (isset($_GET['tr_phrases_post'])) {
59
  $my_transposh_plugin->postpublish->get_post_phrases($_GET['post']);
114
  check_ajax_referer('transposh-clean', 'nonce');
115
  $my_transposh_plugin->database->cleanup($_GET['days']);
116
  }
117
+ // Start maint
118
+ elseif (isset($_GET['maint'])) {
119
+ // just make sure the admin started this... recently enough
120
+ check_ajax_referer('transposh-clean', 'nonce');
121
+ $my_transposh_plugin->database->db_maint();
122
+ }
123
  ?>
wp/transposh_backup.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
wp/transposh_db.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /**
@@ -24,7 +24,7 @@ define('TRANSLATIONS_TABLE', 'translations');
24
  define('TRANSLATIONS_LOG', 'translations_log');
25
 
26
  //Database version
27
- define('DB_VERSION', '1.04');
28
 
29
  //Constant used as key in options database
30
  define('TRANSPOSH_DB_VERSION', "transposh_db_version");
@@ -147,6 +147,7 @@ class transposh_database {
147
  function prefetch_translations($originals, $lang) {
148
  if (!$originals) return;
149
 
 
150
  foreach ($originals as $original => $truth) {
151
  $original = $GLOBALS['wpdb']->escape(html_entity_decode($original, ENT_NOQUOTES, 'UTF-8'));
152
  $cached = $this->cache_fetch($original, $lang);
@@ -156,6 +157,9 @@ class transposh_database {
156
  }
157
  $where .= ( ($where) ? ' OR ' : '') . "original = '$original'";
158
  }
 
 
 
159
  // If we have nothing, we will do nothing
160
  if (!$where) return;
161
  $query = "SELECT original, translated, source FROM {$this->translation_table} WHERE ($where) and lang = '$lang' ";
@@ -188,10 +192,13 @@ class transposh_database {
188
  return $cached;
189
  }
190
  // then we look for a prefetch
191
- if ($this->translations[$original]) {
192
  $translated = $this->translations[$original];
193
 
194
  } else {
 
 
 
195
  $query = "SELECT * FROM {$this->translation_table} WHERE original = '$original' and lang = '$lang' ";
196
  $row = $GLOBALS['wpdb']->get_row($query);
197
 
@@ -227,6 +234,7 @@ class transposh_database {
227
 
228
  return $cached;
229
  }
 
230
  // FIXME - no prefetching for originals yet...
231
  if ($this->translations[$translation]) {
232
  $original = $this->translations[$translation];
@@ -306,6 +314,8 @@ class transposh_database {
306
  $delvalues = '';
307
  $logvalues = '';
308
  $backup_immidiate_possible = false;
 
 
309
  // We are now processing all posted items
310
  for ($i = 0; $i < $items; $i++) {
311
  if (isset($_POST["tk$i"])) {
@@ -326,6 +336,12 @@ class transposh_database {
326
  $source = $_POST["sr$i"];
327
  }
328
 
 
 
 
 
 
 
329
  // should we backup? - yes on any human translation
330
  if ($source == 0) $backup_immidiate_possible = true;
331
 
@@ -344,13 +360,14 @@ class transposh_database {
344
  }
345
  }
346
  // Setting the values string for the database (notice how concatanation is handled)
347
- $values .= "('" . $original . "','" . $translation . "','" . $lang . "','" . $source . "')" . (($items != $i + 1) ? ', ' : '');
348
- $delvalues .= "(original ='$original' AND lang='$lang')" . (($items != $i + 1) ? ' OR ' : '');
349
  // Setting the transaction log records
350
- $logvalues .= "('" . $original . "','" . $translation . "','" . $lang . "','" . $loguser . "','" . $source . "')" . (($items != $i + 1) ? ', ' : '');
351
 
352
  // If we have caching - we remove previous entry from cache
353
  $this->cache_delete($original, $lang);
 
354
  // TODO - maybe store value here?
355
  }
356
 
@@ -437,26 +454,113 @@ class transposh_database {
437
 
438
 
439
  $rows = $GLOBALS['wpdb']->get_results($query);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
440
 
441
- // TODO: work with json
442
- //header("Content-type: text/javascript");
443
- //echo json_encode($rows);
444
- if ($rows !== FALSE) {
445
- echo '<table>' .
446
- '<thead>' .
447
- '<tr>' .
448
- '<th>Translated</th><th/><th>By</th><th>At</th>' .
449
- '</tr>' .
450
- '</thead>' .
451
- '<tbody>';
452
- foreach ($rows as $row) {
453
- if (is_null($row->user_login))
454
- $row->user_login = $row->translated_by;
455
- echo "<tr><td>{$row->translated}</td><td source=\"{$row->source}\"/><td user_id=\"{$row->translated_by}\">{$row->user_login}</td><td>{$row->timestamp}</td></tr>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
  }
457
- echo '</tbody></table>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  }
459
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  exit;
461
  }
462
 
@@ -492,21 +596,22 @@ class transposh_database {
492
  if ($installed_ver != DB_VERSION) {
493
 
494
  // notice - keep every field on a new line or dbdelta fails
495
- $GLOBALS['wpdb']->query("ALTER TABLE $table_name DROP PRIMARY KEY");
496
  $sql = "CREATE TABLE {$this->translation_table} (
497
  original TEXT NOT NULL,
498
  lang CHAR(5) NOT NULL,
499
  translated TEXT,
500
  source TINYINT NOT NULL,
501
  KEY original (original(6),lang)
502
- ) DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci";
503
 
504
  dbDelta($sql);
 
505
 
506
 
507
  // notice - keep every field on a new line or dbdelta fails
508
  // this should be removed in a far future...
509
- $GLOBALS['wpdb']->query("ALTER TABLE $table_name DROP PRIMARY KEY");
510
  $sql = "CREATE TABLE {$this->translation_log_table} (
511
  original text NOT NULL,
512
  lang CHAR(5) NOT NULL,
@@ -515,9 +620,11 @@ class transposh_database {
515
  source TINYINT NOT NULL,
516
  timestamp TIMESTAMP,
517
  KEY original (original(6),lang,timestamp)
518
- ) DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci";
519
 
520
  dbDelta($sql);
 
 
521
  update_option(TRANSPOSH_DB_VERSION, DB_VERSION);
522
  }
523
 
@@ -560,15 +667,16 @@ class transposh_database {
560
  */
561
  function get_orignal_phrases_for_search_term($term, $language) {
562
  $n = '%';
563
- $term = addslashes_gpc($term);
 
564
  $query = "SELECT original" .
565
  " FROM `{$this->translation_table}`" .
566
- " WHERE `lang` LIKE '$language'" .
567
  " AND `translated` LIKE '{$n}{$term}{$n}'";
568
  //TODO wait for feedbacks to see if we should put a limit here.
569
-
570
 
571
  $result = array();
 
572
  $rows = $GLOBALS['wpdb']->get_results($query);
573
 
574
  foreach ($rows as $row) {
@@ -612,6 +720,93 @@ class transposh_database {
612
  exit;
613
  }
614
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
  function restore_translation($original, $lang, $translation, $by, $timestamp) {
616
  // TODO in future
617
  // if there is a newer human translation, just ignore this
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /**
24
  define('TRANSLATIONS_LOG', 'translations_log');
25
 
26
  //Database version
27
+ define('DB_VERSION', '1.05');
28
 
29
  //Constant used as key in options database
30
  define('TRANSPOSH_DB_VERSION', "transposh_db_version");
147
  function prefetch_translations($originals, $lang) {
148
  if (!$originals) return;
149
 
150
+ $where = '';
151
  foreach ($originals as $original => $truth) {
152
  $original = $GLOBALS['wpdb']->escape(html_entity_decode($original, ENT_NOQUOTES, 'UTF-8'));
153
  $cached = $this->cache_fetch($original, $lang);
157
  }
158
  $where .= ( ($where) ? ' OR ' : '') . "original = '$original'";
159
  }
160
+ // make sure $lang is reasonable, unless someone is messing with us, it will be ok
161
+ if (!($this->transposh->options->is_editable_language($lang))) return;
162
+
163
  // If we have nothing, we will do nothing
164
  if (!$where) return;
165
  $query = "SELECT original, translated, source FROM {$this->translation_table} WHERE ($where) and lang = '$lang' ";
192
  return $cached;
193
  }
194
  // then we look for a prefetch
195
+ if (isset($this->translations[$original])) {
196
  $translated = $this->translations[$original];
197
 
198
  } else {
199
+ // make sure $lang is reasonable, unless someone is messing with us, it will be ok
200
+ if (!($this->transposh->options->is_editable_language($lang)))
201
+ return;
202
  $query = "SELECT * FROM {$this->translation_table} WHERE original = '$original' and lang = '$lang' ";
203
  $row = $GLOBALS['wpdb']->get_row($query);
204
 
234
 
235
  return $cached;
236
  }
237
+ // lang
238
  // FIXME - no prefetching for originals yet...
239
  if ($this->translations[$translation]) {
240
  $original = $this->translations[$translation];
314
  $delvalues = '';
315
  $logvalues = '';
316
  $backup_immidiate_possible = false;
317
+ $firstitem = true;
318
+ $alreadybatched = array();
319
  // We are now processing all posted items
320
  for ($i = 0; $i < $items; $i++) {
321
  if (isset($_POST["tk$i"])) {
336
  $source = $_POST["sr$i"];
337
  }
338
 
339
+ // we attempt to avoid
340
+ if (isset($alreadybatched[$original . '---' . $lang])) {
341
+
342
+ continue;
343
+ }
344
+ $alreadybatched[$original . '---' . $lang] = true;
345
  // should we backup? - yes on any human translation
346
  if ($source == 0) $backup_immidiate_possible = true;
347
 
360
  }
361
  }
362
  // Setting the values string for the database (notice how concatanation is handled)
363
+ $values .= ( $firstitem ? '' : ', ') . "('" . $original . "','" . $translation . "','" . $lang . "','" . $source . "')";
364
+ $delvalues .= ( $firstitem ? '' : ' OR ') . "(original ='$original' AND lang='$lang')";
365
  // Setting the transaction log records
366
+ $logvalues .= ( $firstitem ? '' : ', ') . "('" . $original . "','" . $translation . "','" . $lang . "','" . $loguser . "','" . $source . "')";
367
 
368
  // If we have caching - we remove previous entry from cache
369
  $this->cache_delete($original, $lang);
370
+ $firstitem = false;
371
  // TODO - maybe store value here?
372
  }
373
 
454
 
455
 
456
  $rows = $GLOBALS['wpdb']->get_results($query);
457
+ for ($i = 0; $i < count($rows); $i++) {
458
+ if (($rows[$i]->translated_by == $_SERVER['REMOTE_ADDR'] && $rows[$i]->source == '0') || (is_user_logged_in() && current_user_can(TRANSLATOR)) || current_user_can('manage_options')) {
459
+ $rows[$i]->can_delete = true;
460
+ }
461
+ }
462
+ // sending as json
463
+ // CHECK!!! header("Content-type: application/json");
464
+ echo json_encode($rows);
465
+ exit;
466
+ }
467
+
468
+ /**
469
+ * Delete a specific translation history from the logs
470
+ * @param string $token
471
+ * @param string $lang
472
+ * @param string $timestamp
473
+ */
474
+ function del_translation_history($token, $lang, $timestamp) {
475
+ $original = transposh_utils::base64_url_decode($token);
476
+ $original = $GLOBALS['wpdb']->escape(html_entity_decode($original, ENT_NOQUOTES, 'UTF-8'));
477
+ $lang = $GLOBALS['wpdb']->escape($lang);
478
+ $timestamp = $GLOBALS['wpdb']->escape($timestamp);
479
+ header('Transposh: v-' . TRANSPOSH_PLUGIN_VER . ' db_version-' . DB_VERSION);
480
+ $query = "SELECT translated, translated_by, timestamp, source " .
481
+ "FROM {$this->translation_log_table} " .
482
+ "WHERE original='$original' AND lang='$lang' AND timestamp='$timestamp' " .
483
+ "ORDER BY timestamp DESC";
484
+ $rows = $GLOBALS['wpdb']->get_results($query);
485
 
486
+ // We only delete if we found something to delete and it is allowed to delete it (user either did that - by ip, has the translator role or is an admin)
487
+ if (!empty($rows) && (($rows[0]->translated_by == $_SERVER['REMOTE_ADDR'] && $rows[0]->source == '0') || (is_user_logged_in() && current_user_can(TRANSLATOR)) || current_user_can('manage_options'))) {
488
+ // delete faulty record
489
+ $query = "DELETE " .
490
+ "FROM {$this->translation_log_table} " .
491
+ "WHERE original='$original' AND lang='$lang' AND timestamp='$timestamp'";
492
+ $GLOBALS['wpdb']->query($query);
493
+
494
+ // retrieve last translation
495
+ $query = "SELECT translated, source " .
496
+ "FROM {$this->translation_log_table} " .
497
+ "WHERE original='$original' AND lang='$lang' " .
498
+ "ORDER BY timestamp DESC";
499
+ $rows = $GLOBALS['wpdb']->get_results($query);
500
+
501
+
502
+ // delete and revert to last in database
503
+ $delvalues = "(original ='$original' AND lang='$lang')";
504
+ $update = "DELETE FROM " . $this->translation_table . " WHERE $delvalues";
505
+ $this->cache_delete($original, $lang);
506
+
507
+ $result = $GLOBALS['wpdb']->query($update);
508
+ if (!empty($rows)) {
509
+ $translated = $GLOBALS['wpdb']->escape($rows[0]->translated);
510
+ $values = "('" . $original . "','" . $translated . "','" . $lang . "','" . $rows[0]->source . "')";
511
+ $update = "INSERT INTO " . $this->translation_table . " (original, translated, lang, source) VALUES $values";
512
+
513
+ $result = $GLOBALS['wpdb']->query($update);
514
+ } else {
515
+ // there is nothing to revert to...
516
+ $rows[0]->translated = '';
517
  }
518
+ echo json_encode($rows[0]);
519
+ } else {
520
+ echo json_encode(false);
521
+ }
522
+ exit;
523
+ }
524
+
525
+ /**
526
+ * Get translation alternatives for some translation.
527
+ * @param string $token
528
+ */
529
+ function get_translation_alt($token) {
530
+
531
+ //$ref = getenv('HTTP_REFERER');
532
+ $original = transposh_utils::base64_url_decode($token);
533
+
534
+
535
+ if (!isset($original)) {
536
+ exit;
537
  }
538
 
539
+ // Check permissions
540
+ if (!($this->transposh->is_translator())) {
541
+
542
+ header('HTTP/1.0 401 Unauthorized alt request');
543
+ exit;
544
+ }
545
+
546
+
547
+ // The original content is encoded as base64 before it is sent (i.e. token), after we
548
+ // decode it should just the same after it was parsed.
549
+ // TODO - check if needed later
550
+ $original = $GLOBALS['wpdb']->escape(html_entity_decode($original, ENT_NOQUOTES, 'UTF-8'));
551
+
552
+ // add our own custom header - so we will know that we got here
553
+ // TODO - move to ajax file?
554
+ header('Transposh: v-' . TRANSPOSH_PLUGIN_VER . ' db_version-' . DB_VERSION);
555
+
556
+ $query = "SELECT translated, lang " .
557
+ "FROM {$this->translation_table} " .
558
+ "WHERE original='$original' AND source=0 " .
559
+ "ORDER BY lang";
560
+
561
+ $rows = $GLOBALS['wpdb']->get_results($query);
562
+
563
+ echo json_encode($rows);
564
  exit;
565
  }
566
 
596
  if ($installed_ver != DB_VERSION) {
597
 
598
  // notice - keep every field on a new line or dbdelta fails
599
+ $GLOBALS['wpdb']->query("ALTER TABLE {$this->translation_table} DROP PRIMARY KEY");
600
  $sql = "CREATE TABLE {$this->translation_table} (
601
  original TEXT NOT NULL,
602
  lang CHAR(5) NOT NULL,
603
  translated TEXT,
604
  source TINYINT NOT NULL,
605
  KEY original (original(6),lang)
606
+ ) DEFAULT CHARSET=utf8 COLLATE=utf8_bin";
607
 
608
  dbDelta($sql);
609
+ $GLOBALS['wpdb']->query("ALTER TABLE {$this->translation_table} CONVERT TO CHARSET utf8 COLLATE utf8_bin");
610
 
611
 
612
  // notice - keep every field on a new line or dbdelta fails
613
  // this should be removed in a far future...
614
+ $GLOBALS['wpdb']->query("ALTER TABLE {$this->translation_log_table} DROP PRIMARY KEY");
615
  $sql = "CREATE TABLE {$this->translation_log_table} (
616
  original text NOT NULL,
617
  lang CHAR(5) NOT NULL,
620
  source TINYINT NOT NULL,
621
  timestamp TIMESTAMP,
622
  KEY original (original(6),lang,timestamp)
623
+ ) DEFAULT CHARSET=utf8 COLLATE=utf8_bin";
624
 
625
  dbDelta($sql);
626
+ $GLOBALS['wpdb']->query("ALTER TABLE {$this->translation_log_table} CONVERT TO CHARSET utf8 COLLATE utf8_bin");
627
+
628
  update_option(TRANSPOSH_DB_VERSION, DB_VERSION);
629
  }
630
 
667
  */
668
  function get_orignal_phrases_for_search_term($term, $language) {
669
  $n = '%';
670
+ $term = $GLOBALS['wpdb']->escape(html_entity_decode($term, ENT_NOQUOTES, 'UTF-8'));
671
+ $language = $GLOBALS['wpdb']->escape($language);
672
  $query = "SELECT original" .
673
  " FROM `{$this->translation_table}`" .
674
+ " WHERE `lang` = '$language'" .
675
  " AND `translated` LIKE '{$n}{$term}{$n}'";
676
  //TODO wait for feedbacks to see if we should put a limit here.
 
677
 
678
  $result = array();
679
+ if (strlen($term) < 3) return $result;
680
  $rows = $GLOBALS['wpdb']->get_results($query);
681
 
682
  foreach ($rows as $row) {
720
  exit;
721
  }
722
 
723
+ function db_maint() {
724
+ // clean duplicate log entries
725
+ $dedup = 'SELECT * , count( * )' .
726
+ ' FROM ' . $this->translation_log_table .
727
+ ' GROUP BY `original` , `lang` , `translated` , `translated_by` , `timestamp` , `source`' .
728
+ ' HAVING count( * ) >1';
729
+ $rows = $GLOBALS['wpdb']->get_results($dedup);
730
+
731
+ foreach ($rows as $row) {
732
+ $row->original = $GLOBALS['wpdb']->escape($row->original);
733
+ $row->translated = $GLOBALS['wpdb']->escape($row->translated);
734
+ $row->translated_by = $GLOBALS['wpdb']->escape($row->translated_by);
735
+ $delvalues = "(original ='{$row->original}' AND lang='{$row->lang}' AND translated='{$row->translated}'" .
736
+ " AND translated_by='{$row->translated_by}' AND timestamp='{$row->timestamp}' AND source='{$row->source}')";
737
+ $update = "DELETE FROM " . $this->translation_log_table . " WHERE $delvalues";
738
+
739
+ $result = $GLOBALS['wpdb']->query($update);
740
+ $values = "('{$row->original}','{$row->lang}','{$row->translated}','$row->translated_by','$row->timestamp','$row->source')";
741
+ $update = "INSERT INTO " . $this->translation_log_table . " (original, lang, translated, translated_by, timestamp, source) VALUES $values";
742
+
743
+ $result = $GLOBALS['wpdb']->query($update);
744
+ $this->cache_delete($row->original, $row->lang);
745
+ }
746
+ //$this->cache_clean();
747
+ // clean autotranslate entries post dating a human translation
748
+ $autojunk = 'SELECT w2 . *' .
749
+ ' FROM ' . $this->translation_log_table . ' AS w1' .
750
+ ' INNER JOIN ' . $this->translation_log_table . ' AS w2' .
751
+ ' ON w1.original = w2.original' .
752
+ ' AND w1.lang = w2.lang' .
753
+ ' AND w1.source =0' .
754
+ ' AND w2.source >0' .
755
+ ' AND w1.timestamp < w2.timestamp';
756
+ $rows = $GLOBALS['wpdb']->get_results($autojunk);
757
+
758
+ foreach ($rows as $row) {
759
+ $row->original = $GLOBALS['wpdb']->escape($row->original);
760
+ $row->translated = $GLOBALS['wpdb']->escape($row->translated);
761
+ $row->translated_by = $GLOBALS['wpdb']->escape($row->translated_by);
762
+ $delvalues = "(original ='{$row->original}' AND lang='{$row->lang}' AND translated='{$row->translated}'" .
763
+ " AND translated_by='{$row->translated_by}' AND timestamp='{$row->timestamp}' AND source='{$row->source}')";
764
+ $update = "DELETE FROM " . $this->translation_log_table . " WHERE $delvalues";
765
+ $result = $GLOBALS['wpdb']->query($update);
766
+
767
+ $this->cache_delete($row->original, $row->lang);
768
+ }
769
+ // check for discrepencies (last translation in log does not equal current translation)
770
+ // TODO
771
+ /* SELECT *
772
+ FROM `wp_translations` AS w1
773
+ INNER JOIN wp_translations_log AS w2 ON w1.original = w2.original
774
+ AND w1.lang = w2.lang
775
+ LEFT OUTER JOIN wp_translations_log AS w3 ON ( w2.original = w3.original
776
+ AND w2.lang = w3.lang
777
+ AND w2.timestamp < w3.timestamp )
778
+ WHERE w3.original IS NULL
779
+ AND w1.translated != w2.translated */
780
+
781
+ // check for transalations that have no log representation
782
+ // TODO
783
+ /* SELECT *
784
+ FROM wp_translations
785
+ LEFT OUTER JOIN wp_translations_log
786
+ ON (wp_translations.original = wp_translations_log.original AND wp_translations.lang = wp_translations_log.lang)
787
+ WHERE wp_translations_log.original IS NULL
788
+ */
789
+
790
+ // if we have multiple translations for the same item, we will delete them and revert to latest from log
791
+ // TODO - handle this, but not now, case sensativity issues
792
+ /* $duptrans = 'SELECT *' .
793
+ ' FROM ' . $this->translation_table .
794
+ ' GROUP BY original, lang' .
795
+ ' HAVING count( * ) >1';
796
+ $rows = $GLOBALS['wpdb']->get_results($duptrans);
797
+
798
+ foreach ($rows as $row) {
799
+ $row->original = $GLOBALS['wpdb']->escape($row->original);
800
+ $delvalues = "(original ='{$row->original}' AND lang='{$row->lang}')";
801
+ $row->original = $GLOBALS['wpdb']->escape($row->original);
802
+ $update = "DELETE FROM " . $this->translation_log_table . " WHERE $delvalues";
803
+
804
+ // $result = $GLOBALS['wpdb']->query($update);
805
+ } */
806
+ $this->cache_clean();
807
+ exit;
808
+ }
809
+
810
  function restore_translation($original, $lang, $translation, $by, $timestamp) {
811
  // TODO in future
812
  // if there is a newer human translation, just ignore this
wp/transposh_options.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  // OLD Options - To be removed
@@ -62,6 +62,8 @@ define('WIDGET_PROGRESSBAR', 'widget_progressbar');
62
  define('WIDGET_ALLOW_SET_DEFLANG', 'widget_allow_set_deflang');
63
  //Allows removing of transposh logo in exchange for an ad @since 0.6.0
64
  define('WIDGET_REMOVE_LOGO_FOR_AD', 'widget_remove_logo');
 
 
65
  //Stores the site key to transposh services (backup @since 0.5.0)
66
  define('TRANSPOSH_KEY', 'transposh_key');
67
  //Stores the site key to transposh services (backup @since 0.5.0)
@@ -105,6 +107,7 @@ class transposh_plugin_options {
105
  $this->set_default_option_value(WIDGET_PROGRESSBAR);
106
  $this->set_default_option_value(WIDGET_ALLOW_SET_DEFLANG);
107
  $this->set_default_option_value(WIDGET_REMOVE_LOGO_FOR_AD);
 
108
  $this->set_default_option_value(TRANSPOSH_KEY);
109
  $this->set_default_option_value(TRANSPOSH_BACKUP_SCHEDULE);
110
  $this->migrate_old_config();
@@ -177,6 +180,15 @@ class transposh_plugin_options {
177
  return $this->options[WIDGET_FILE];
178
  }
179
 
 
 
 
 
 
 
 
 
 
180
  function get_widget_allow_set_default_language() {
181
  return $this->options[WIDGET_ALLOW_SET_DEFLANG];
182
  }
@@ -295,6 +307,15 @@ class transposh_plugin_options {
295
  $this->set_value($val, $this->options[WIDGET_FILE]);
296
  }
297
 
 
 
 
 
 
 
 
 
 
298
  function set_widget_allow_set_default_language($val) {
299
  $val = ($val) ? 1 : 0;
300
  $this->set_value($val, $this->options[WIDGET_ALLOW_SET_DEFLANG]);
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  // OLD Options - To be removed
62
  define('WIDGET_ALLOW_SET_DEFLANG', 'widget_allow_set_deflang');
63
  //Allows removing of transposh logo in exchange for an ad @since 0.6.0
64
  define('WIDGET_REMOVE_LOGO_FOR_AD', 'widget_remove_logo');
65
+ //Allows theming of the progressbar and edit window @since 0.7.0
66
+ define('WIDGET_THEME', 'widget_theme');
67
  //Stores the site key to transposh services (backup @since 0.5.0)
68
  define('TRANSPOSH_KEY', 'transposh_key');
69
  //Stores the site key to transposh services (backup @since 0.5.0)
107
  $this->set_default_option_value(WIDGET_PROGRESSBAR);
108
  $this->set_default_option_value(WIDGET_ALLOW_SET_DEFLANG);
109
  $this->set_default_option_value(WIDGET_REMOVE_LOGO_FOR_AD);
110
+ $this->set_default_option_value(WIDGET_THEME, 'ui-lightness');
111
  $this->set_default_option_value(TRANSPOSH_KEY);
112
  $this->set_default_option_value(TRANSPOSH_BACKUP_SCHEDULE);
113
  $this->migrate_old_config();
180
  return $this->options[WIDGET_FILE];
181
  }
182
 
183
+ /**
184
+ * return theme
185
+ * @since 0.7.0
186
+ * @return string
187
+ */
188
+ function get_widget_theme() {
189
+ return $this->options[WIDGET_THEME];
190
+ }
191
+
192
  function get_widget_allow_set_default_language() {
193
  return $this->options[WIDGET_ALLOW_SET_DEFLANG];
194
  }
307
  $this->set_value($val, $this->options[WIDGET_FILE]);
308
  }
309
 
310
+ /**
311
+ * Set the widget theme
312
+ * @since 0.7.0
313
+ * @param string $val
314
+ */
315
+ function set_widget_theme($val) {
316
+ $this->set_value($val, $this->options[WIDGET_THEME]);
317
+ }
318
+
319
  function set_widget_allow_set_default_language($val) {
320
  $val = ($val) ? 1 : 0;
321
  $this->set_value($val, $this->options[WIDGET_ALLOW_SET_DEFLANG]);
wp/transposh_postpublish.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
@@ -138,7 +138,7 @@ class transposh_postpublish {
138
  list($source, $translation) = $this->transposh->database->fetch_translation($key, $lang);
139
  if (!$translation) {
140
  // p stands for phrases, l stands for languages, t is token
141
- if (!is_array($json['p'][$key]['l'])) {
142
  $json['p'][$key]['l'] = array();
143
  }
144
  array_push($json['p'][$key]['l'], $lang);
@@ -147,9 +147,9 @@ class transposh_postpublish {
147
  }
148
  }
149
  // only if a languages list was created we'll need to translate this
150
- if (is_array($json['p'][$key]['l'])) {
151
  $json['p'][$key]['t'] = transposh_utils::base64_url_encode($key);
152
- $json['length']++;
153
  }
154
  }
155
 
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
138
  list($source, $translation) = $this->transposh->database->fetch_translation($key, $lang);
139
  if (!$translation) {
140
  // p stands for phrases, l stands for languages, t is token
141
+ if (!@is_array($json['p'][$key]['l'])) {
142
  $json['p'][$key]['l'] = array();
143
  }
144
  array_push($json['p'][$key]['l'], $lang);
147
  }
148
  }
149
  // only if a languages list was created we'll need to translate this
150
+ if (@is_array($json['p'][$key]['l'])) {
151
  $json['p'][$key]['t'] = transposh_utils::base64_url_encode($key);
152
+ @$json['length']++;
153
  }
154
  }
155
 
wp/transposh_widget.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
 
3
  /*
4
- * Transposh v0.6.7
5
  * http://transposh.org/
6
  *
7
- * Copyright 2010, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
- * Date: Fri, 17 Dec 2010 12:19:12 +0200
12
  */
13
 
14
  /*
@@ -248,10 +248,36 @@ class transposh_plugin_widget {
248
  // last - you can now remove the logo in exchange to a few percentage of ad and affiliate revenues on your pages, isn't that better?
249
  $plugpath = parse_url($this->transposh->transposh_plugin_url, PHP_URL_PATH);
250
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  echo '<div id="' . SPAN_PREFIX . 'credit">';
252
  if (!$this->transposh->options->get_widget_remove_logo()) {
253
- echo 'by <a href="http://tran' . 'sposh.org"><img class="' . NO_TRANSLATE_CLASS . '" height="16" width="16" src="' .
254
- $plugpath . '/img/tplog' . 'o.png" style="padding:1px;border:0px" title="' . esc_attr__('Transposh', TRANSPOSH_TEXT_DOMAIN) . '" alt="' . esc_attr__('Transposh', TRANSPOSH_TEXT_DOMAIN) . '"/></a>';
255
  }
256
  echo '</div>';
257
  echo $after_widget;
@@ -264,6 +290,7 @@ class transposh_plugin_widget {
264
  $this->transposh->options->set_widget_progressbar($_POST[WIDGET_PROGRESSBAR]);
265
  $this->transposh->options->set_widget_allow_set_default_language($_POST[WIDGET_ALLOW_SET_DEFLANG]);
266
  $this->transposh->options->set_widget_remove_logo($_POST[WIDGET_REMOVE_LOGO_FOR_AD]);
 
267
  if ($save) $this->transposh->options->update_options();
268
  // Avoid coming here twice...
269
  unset($_POST['transposh-submit']);
@@ -327,6 +354,9 @@ class transposh_plugin_widget {
327
  */
328
  function transposh_widget_control() {
329
  if (isset($_POST['transposh-submit'])) $this->transposh_widget_post();
 
 
 
330
 
331
  $widgets = $this->get_widgets();
332
 
@@ -346,7 +376,16 @@ class transposh_plugin_widget {
346
  '<span style="border-bottom: 1px dotted #333; cursor: help; margin-left: 4px" title="' . esc_attr__('Widget will allow setting this language as user default', TRANSPOSH_TEXT_DOMAIN) . '">' . __('Allow user to set current language as default', TRANSPOSH_TEXT_DOMAIN) . '</span><br/>' .
347
  '<input type="checkbox" id="' . WIDGET_REMOVE_LOGO_FOR_AD . '" name="' . WIDGET_REMOVE_LOGO_FOR_AD . '"' . ($this->transposh->options->get_widget_remove_logo() ? ' checked="checked"' : '') . '/>' .
348
  '<span style="border-bottom: 1px dotted #333; cursor: help; margin-left: 4px" title="' . esc_attr__('Transposh logo will not appear on widget', TRANSPOSH_TEXT_DOMAIN) . '">' . __('Remove transposh logo (see <a href="http://transposh.org/logoterms">terms</a>)', TRANSPOSH_TEXT_DOMAIN) . '</span><br/>' .
349
- '</p>' .
 
 
 
 
 
 
 
 
 
350
  '<input type="hidden" name="transposh-submit" id="transposh-submit" value="1"/>';
351
  }
352
 
1
  <?php
2
 
3
  /*
4
+ * Transposh v0.7.0
5
  * http://transposh.org/
6
  *
7
+ * Copyright 2011, Team Transposh
8
  * Licensed under the GPL Version 2 or higher.
9
  * http://transposh.org/license
10
  *
11
+ * Date: Tue, 11 Jan 2011 15:24:55 +0200
12
  */
13
 
14
  /*
248
  // last - you can now remove the logo in exchange to a few percentage of ad and affiliate revenues on your pages, isn't that better?
249
  $plugpath = parse_url($this->transposh->transposh_plugin_url, PHP_URL_PATH);
250
 
251
+ if (!$this->transposh->options->get_widget_remove_logo()) {
252
+ $tagline = esc_attr__('Transposh', TRANSPOSH_TEXT_DOMAIN) . ' - ';
253
+ switch (ord(md5($_SERVER['REQUEST_URI'])) % 5) {
254
+ case 0:
255
+ $tagline .= esc_attr__('translation plugin for wordpress', TRANSPOSH_TEXT_DOMAIN);
256
+ break;
257
+ case 1:
258
+ $tagline .= esc_attr__('wordpress translation plugin', TRANSPOSH_TEXT_DOMAIN);
259
+ break;
260
+ case 2:
261
+ $tagline .= esc_attr__('translate your blog to 60+ languages', TRANSPOSH_TEXT_DOMAIN);
262
+ break;
263
+ case 3:
264
+ $tagline .= esc_attr__('website crowdsourcing translation plugin', TRANSPOSH_TEXT_DOMAIN);
265
+ break;
266
+ case 4:
267
+ $tagline .= esc_attr__('google translate and bing translate plugin for wordpress', TRANSPOSH_TEXT_DOMAIN);
268
+ break;
269
+ }
270
+
271
+ $extralang = '';
272
+ if ($this->transposh->target_language != 'en') {
273
+ $extralang = $this->transposh->target_language;
274
+ }
275
+ }
276
+
277
  echo '<div id="' . SPAN_PREFIX . 'credit">';
278
  if (!$this->transposh->options->get_widget_remove_logo()) {
279
+ echo 'by <a href="http://tran' . 'sposh.org/' . $extralang . '"><img class="' . NO_TRANSLATE_CLASS . '" height="16" width="16" src="' .
280
+ $plugpath . '/img/tplog' . 'o.png" style="padding:1px;border:0px" title="' . $tagline . '" alt="' . $tagline . '"/></a>';
281
  }
282
  echo '</div>';
283
  echo $after_widget;
290
  $this->transposh->options->set_widget_progressbar($_POST[WIDGET_PROGRESSBAR]);
291
  $this->transposh->options->set_widget_allow_set_default_language($_POST[WIDGET_ALLOW_SET_DEFLANG]);
292
  $this->transposh->options->set_widget_remove_logo($_POST[WIDGET_REMOVE_LOGO_FOR_AD]);
293
+ $this->transposh->options->set_widget_theme($_POST[WIDGET_THEME]);
294
  if ($save) $this->transposh->options->update_options();
295
  // Avoid coming here twice...
296
  unset($_POST['transposh-submit']);
354
  */
355
  function transposh_widget_control() {
356
  if (isset($_POST['transposh-submit'])) $this->transposh_widget_post();
357
+ $themes = array('base', 'black-tie', 'blitzer', 'cupertino', 'dark-hive', 'dot-luv', 'eggplant', 'excite-bike', 'flick',
358
+ 'hot-sneaks', 'humanity', 'le-frog', 'mint-choc', 'overcast', 'pepper-grinder', 'redmond', 'smoothness', 'south-street',
359
+ 'start', 'sunny', 'swanky-purse', 'trontastic', 'ui-darkness', 'ui-lightness', 'vader');
360
 
361
  $widgets = $this->get_widgets();
362
 
376
  '<span style="border-bottom: 1px dotted #333; cursor: help; margin-left: 4px" title="' . esc_attr__('Widget will allow setting this language as user default', TRANSPOSH_TEXT_DOMAIN) . '">' . __('Allow user to set current language as default', TRANSPOSH_TEXT_DOMAIN) . '</span><br/>' .
377
  '<input type="checkbox" id="' . WIDGET_REMOVE_LOGO_FOR_AD . '" name="' . WIDGET_REMOVE_LOGO_FOR_AD . '"' . ($this->transposh->options->get_widget_remove_logo() ? ' checked="checked"' : '') . '/>' .
378
  '<span style="border-bottom: 1px dotted #333; cursor: help; margin-left: 4px" title="' . esc_attr__('Transposh logo will not appear on widget', TRANSPOSH_TEXT_DOMAIN) . '">' . __('Remove transposh logo (see <a href="http://transposh.org/logoterms">terms</a>)', TRANSPOSH_TEXT_DOMAIN) . '</span><br/>' .
379
+ '</p>';
380
+
381
+ echo '<p><label for="' . WIDGET_THEME . '">' . __('Edit interface (and progress bar) theme:', TRANSPOSH_TEXT_DOMAIN) . '<br/>' .
382
+ '<select id="transposh-style" name="' . WIDGET_THEME . '">';
383
+ foreach ($themes as $theme) {
384
+ $selected = ($this->transposh->options->get_widget_theme() == $theme) ? ' selected="selected"' : '';
385
+ echo "<option value=\"$theme\"$selected>{$theme}</option>";
386
+ }
387
+ echo '</select>' .
388
+ '</label></p>' .
389
  '<input type="hidden" name="transposh-submit" id="transposh-submit" value="1"/>';
390
  }
391