summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2016-01-15 11:23:56 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2016-01-15 11:23:56 +0900
commit3af58fae1710ed3baf800c59da1ab918089c2a9b (patch)
tree3fa09be108369190dc6f1a6b460d2764769c179a
parent49f3a73bd658c39311afcbf2dcc0acf9faa59ea9 (diff)
downloadibus-3af58fae1710ed3baf800c59da1ab918089c2a9b.tar.gz
engine: Change language code from ISO 639-2 to ISO 639-1 in simple.xml
BUG=https://github.com/ibus/ibus/issues/1834 Review URL: https://codereview.appspot.com/283040043
-rw-r--r--engine/Makefile.am5
-rwxr-xr-xengine/iso639converter.py197
-rw-r--r--engine/simple.xml.in122
-rw-r--r--ui/gtk3/switcher.vala9
4 files changed, 266 insertions, 67 deletions
diff --git a/engine/Makefile.am b/engine/Makefile.am
index 19fb6b0a..86f0e2b8 100644
--- a/engine/Makefile.am
+++ b/engine/Makefile.am
@@ -2,8 +2,8 @@
#
# ibus - The Input Bus
#
-# Copyright (c) 2010-2015, Google Inc. All rights reserved.
-# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
+# Copyright (c) 2010-2016, Google Inc. All rights reserved.
+# Copyright (c) 2007-2016 Peng Huang <shawn.p.huang@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -83,6 +83,7 @@ CLEANFILES = \
$(NULL)
EXTRA_DIST = \
+ iso639converter.py \
simple.xml.in \
$(NULL)
diff --git a/engine/iso639converter.py b/engine/iso639converter.py
new file mode 100755
index 00000000..e1e1a917
--- /dev/null
+++ b/engine/iso639converter.py
@@ -0,0 +1,197 @@
+#!/usr/bin/python
+# vim:set fileencoding=utf-8 et sts=4 sw=4:
+#
+# ibus - Intelligent Input Bus for Linux / Unix OS
+#
+# Copyright © 2016 Takao Fujiwara <takao.fujiwara1@gmail.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+
+# This script converts ISO 639-2 of three characters to ISO 639-1 of two
+# characters in simple.xml.
+# E.g. "eng" to "en"
+
+
+from xml.sax import make_parser as sax_make_parser
+from xml.sax.handler import feature_namespaces as sax_feature_namespaces
+from xml.sax.saxutils import XMLFilterBase, XMLGenerator
+from xml.sax._exceptions import SAXParseException
+
+import codecs
+import getopt
+import io
+import os
+import sys
+
+INSTALLED_SIMPLE_XML = '/usr/share/ibus/component/simple.xml'
+PY3K = sys.version_info >= (3, 0)
+
+if PY3K:
+ from io import StringIO
+else:
+ # io.StringIO does not work with XMLGenerator
+ from cStringIO import StringIO
+ # iso_639.xml includes UTF-8
+ reload(sys)
+ sys.setdefaultencoding('utf-8')
+
+
+def usage(prgname):
+ print('''\
+Usage:
+ %s [OPTION...]
+
+Options:
+ -h, --help Show this message
+ -i, --input=SIMPLE_XML Load SIMPLE_XML file (default is:
+ %s)
+ -o, --output=FILE Output FILE (default is stdout)
+''' % (prgname, INSTALLED_SIMPLE_XML))
+
+
+class ISO639XML(XMLFilterBase):
+ def __init__(self, parser=None):
+ self.__code2to1 = {}
+ self.__codetoname = {}
+ XMLFilterBase.__init__(self, parser)
+ def startElement(self, name, attrs):
+ if name != 'iso_639_entry':
+ return
+ n = attrs.get('name')
+ iso639_1 = attrs.get('iso_639_1_code')
+ iso639_2b = attrs.get('iso_639_2B_code')
+ iso639_2t = attrs.get('iso_639_2T_code')
+ if iso639_1 != None:
+ self.__codetoname[iso639_1] = n
+ if iso639_2b != None:
+ self.__code2to1[iso639_2b] = iso639_1
+ self.__codetoname[iso639_2b] = n
+ if iso639_2t != None and iso639_2b != iso639_2t:
+ self.__code2to1[iso639_2t] = iso639_1
+ self.__codetoname[iso639_2t] = n
+ def code2to1(self, iso639_2):
+ try:
+ return self.__code2to1[iso639_2]
+ except KeyError:
+ return None
+
+
+class IBusComponentXML(XMLFilterBase):
+ def __init__(self, parser=None, downstream=None, iso639=None):
+ XMLFilterBase.__init__(self, parser)
+ self.__downstream = downstream
+ self.__iso639 = iso639
+ self.__is_language = False
+ def startDocument(self):
+ if self.__downstream:
+ self.__downstream.startDocument()
+ def endDocument(self):
+ if self.__downstream:
+ self.__downstream.endDocument()
+ def startElement(self, name, attrs):
+ if name == 'language':
+ self.__is_language = True
+ if self.__downstream:
+ self.__downstream.startElement(name, attrs)
+ def endElement(self, name):
+ if name == 'language':
+ self.__is_language = False
+ if self.__downstream:
+ self.__downstream.endElement(name)
+ def characters(self, text):
+ if self.__is_language:
+ if self.__iso639:
+ iso639_1 = self.__iso639.code2to1(text)
+ if iso639_1 != None:
+ text = iso639_1
+ if self.__downstream:
+ self.__downstream.characters(text)
+
+
+class ConvertEngineXML():
+ def __init__(self, path, iso639=None):
+ self.__path = path
+ self.__iso639 = iso639
+
+ self.__result = StringIO()
+ downstream = XMLGenerator(self.__result, 'utf-8')
+ self.__load(downstream)
+
+ def __load(self, downstream=None):
+ parser = sax_make_parser()
+ parser.setFeature(sax_feature_namespaces, 0)
+ self.__handler = IBusComponentXML(parser, downstream, self.__iso639)
+ parser.setContentHandler(self.__handler)
+ f = codecs.open(self.__path, 'r', encoding='utf-8')
+ try:
+ parser.parse(f)
+ except SAXParseException:
+ print('Error: Invalid file format: %s' % path)
+ finally:
+ f.close()
+ def write(self, output=None):
+ if output != None:
+ od = codecs.open(output, 'w', encoding='utf-8')
+ else:
+ if PY3K:
+ od = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
+ else:
+ od = codecs.getwriter('utf-8')(sys.stdout)
+ contents = self.__result.getvalue()
+ od.write(contents)
+
+
+def parse_iso639(path):
+ f = codecs.open(path, 'r', encoding='utf-8')
+ parser = sax_make_parser()
+ parser.setFeature(sax_feature_namespaces, 0)
+ handler = ISO639XML(parser)
+ parser.setContentHandler(handler)
+ try:
+ parser.parse(f)
+ except SAXParseException:
+ print('Error: Invalid file format: %s' % path)
+ finally:
+ f.close()
+ return handler
+
+
+if __name__ == '__main__':
+ prgname = os.path.basename(sys.argv[0])
+ try:
+ opts, args = getopt.getopt(sys.argv[1:],
+ 'hi:o:',
+ ['help', 'input=', 'output='])
+ except getopt.GetoptError as err:
+ print(err)
+ usage(prgname)
+ sys.exit(2)
+ if len(args) > 0:
+ usage(prgname)
+ sys.exit(2)
+ input = INSTALLED_SIMPLE_XML
+ output = None
+ for opt, arg in opts:
+ if opt in ('-h', '--help'):
+ usage(prgname)
+ sys.exit()
+ elif opt in ('-i', '--input'):
+ input = arg
+ elif opt in ('-o', '--output'):
+ output = arg
+
+ iso639 = parse_iso639('/usr/share/xml/iso-codes/iso_639.xml')
+ xml = ConvertEngineXML(input, iso639)
+ xml.write(output)
diff --git a/engine/simple.xml.in b/engine/simple.xml.in
index c0a7a10b..b3996807 100644
--- a/engine/simple.xml.in
+++ b/engine/simple.xml.in
@@ -11,7 +11,7 @@
<engines>
<engine>
<name>xkb:us::eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>us</layout>
@@ -22,7 +22,7 @@
</engine>
<engine>
<name>xkb:us:intl:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>us</layout>
@@ -34,7 +34,7 @@
</engine>
<engine>
<name>xkb:us:colemak:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>us</layout>
@@ -46,7 +46,7 @@
</engine>
<engine>
<name>xkb:us:dvorak:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>us</layout>
@@ -58,7 +58,7 @@
</engine>
<engine>
<name>xkb:us:altgr-intl:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>us</layout>
@@ -70,7 +70,7 @@
</engine>
<engine>
<name>xkb:ara::ara</name>
- <language>ara</language>
+ <language>ar</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ara</layout>
@@ -81,7 +81,7 @@
</engine>
<engine>
<name>xkb:be::ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>be</layout>
@@ -92,7 +92,7 @@
</engine>
<engine>
<name>xkb:be::nld</name>
- <language>nld</language>
+ <language>nl</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>be</layout>
@@ -103,7 +103,7 @@
</engine>
<engine>
<name>xkb:be::fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>be</layout>
@@ -114,7 +114,7 @@
</engine>
<engine>
<name>xkb:br::por</name>
- <language>por</language>
+ <language>pt</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>br</layout>
@@ -125,7 +125,7 @@
</engine>
<engine>
<name>xkb:br:dvorak:por</name>
- <language>por</language>
+ <language>pt</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>br</layout>
@@ -137,7 +137,7 @@
</engine>
<engine>
<name>xkb:bg::bul</name>
- <language>bul</language>
+ <language>bg</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>bg</layout>
@@ -148,7 +148,7 @@
</engine>
<engine>
<name>xkb:bg:phonetic:bul</name>
- <language>bul</language>
+ <language>bg</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>bg</layout>
@@ -160,7 +160,7 @@
</engine>
<engine>
<name>xkb:ca::fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ca</layout>
@@ -171,7 +171,7 @@
</engine>
<engine>
<name>xkb:ca:eng:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ca</layout>
@@ -194,7 +194,7 @@
</engine>
<engine>
<name>xkb:cz::cze</name>
- <language>cze</language>
+ <language>cs</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>cz</layout>
@@ -205,7 +205,7 @@
</engine>
<engine>
<name>xkb:cz:qwerty:cze</name>
- <language>cze</language>
+ <language>cs</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>cz</layout>
@@ -217,7 +217,7 @@
</engine>
<engine>
<name>xkb:dk::dan</name>
- <language>dan</language>
+ <language>da</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>dk</layout>
@@ -228,7 +228,7 @@
</engine>
<engine>
<name>xkb:ee::est</name>
- <language>est</language>
+ <language>et</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ee</layout>
@@ -239,7 +239,7 @@
</engine>
<engine>
<name>xkb:fi::fin</name>
- <language>fin</language>
+ <language>fi</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>fi</layout>
@@ -250,7 +250,7 @@
</engine>
<engine>
<name>xkb:fr::fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>fr</layout>
@@ -261,7 +261,7 @@
</engine>
<engine>
<name>xkb:fr:oss:fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>fr</layout>
@@ -273,7 +273,7 @@
</engine>
<engine>
<name>xkb:fr:bepo:fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>fr</layout>
@@ -285,7 +285,7 @@
</engine>
<engine>
<name>xkb:fr:dvorak:fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>fr</layout>
@@ -297,7 +297,7 @@
</engine>
<engine>
<name>xkb:de::ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>de</layout>
@@ -308,7 +308,7 @@
</engine>
<engine>
<name>xkb:de:dvorak:ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>de</layout>
@@ -320,7 +320,7 @@
</engine>
<engine>
<name>xkb:de:neo:ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>de</layout>
@@ -332,7 +332,7 @@
</engine>
<engine>
<name>xkb:de:nodeadkeys:ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>de</layout>
@@ -344,7 +344,7 @@
</engine>
<engine>
<name>xkb:gr::gre</name>
- <language>gre</language>
+ <language>el</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>gr</layout>
@@ -355,7 +355,7 @@
</engine>
<engine>
<name>xkb:hu::hun</name>
- <language>hun</language>
+ <language>hu</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>hu</layout>
@@ -366,7 +366,7 @@
</engine>
<engine>
<name>xkb:il::heb</name>
- <language>heb</language>
+ <language>he</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>il</layout>
@@ -377,7 +377,7 @@
</engine>
<engine>
<name>xkb:it::ita</name>
- <language>ita</language>
+ <language>it</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>it</layout>
@@ -388,7 +388,7 @@
</engine>
<engine>
<name>xkb:jp::jpn</name>
- <language>jpn</language>
+ <language>ja</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>jp</layout>
@@ -399,7 +399,7 @@
</engine>
<engine>
<name>xkb:latam::spa</name>
- <language>spa</language>
+ <language>es</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>latam</layout>
@@ -410,7 +410,7 @@
</engine>
<engine>
<name>xkb:lt::lit</name>
- <language>lit</language>
+ <language>lt</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>lt</layout>
@@ -421,7 +421,7 @@
</engine>
<engine>
<name>xkb:lv:apostrophe:lav</name>
- <language>lav</language>
+ <language>lv</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>lv</layout>
@@ -433,7 +433,7 @@
</engine>
<engine>
<name>xkb:no::nor</name>
- <language>nor</language>
+ <language>no</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>no</layout>
@@ -444,7 +444,7 @@
</engine>
<engine>
<name>xkb:no:dvorak:nor</name>
- <language>nor</language>
+ <language>no</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>no</layout>
@@ -456,7 +456,7 @@
</engine>
<engine>
<name>xkb:pl::pol</name>
- <language>pol</language>
+ <language>pl</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>pl</layout>
@@ -467,7 +467,7 @@
</engine>
<engine>
<name>xkb:pl:dvorak:pol</name>
- <language>pol</language>
+ <language>pl</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>pl</layout>
@@ -479,7 +479,7 @@
</engine>
<engine>
<name>xkb:pl:qwertz:pol</name>
- <language>pol</language>
+ <language>pl</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>pl</layout>
@@ -491,7 +491,7 @@
</engine>
<engine>
<name>xkb:pt::por</name>
- <language>por</language>
+ <language>pt</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>pt</layout>
@@ -502,7 +502,7 @@
</engine>
<engine>
<name>xkb:ro::rum</name>
- <language>rum</language>
+ <language>ro</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ro</layout>
@@ -513,7 +513,7 @@
</engine>
<engine>
<name>xkb:ru::rus</name>
- <language>rus</language>
+ <language>ru</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ru</layout>
@@ -524,7 +524,7 @@
</engine>
<engine>
<name>xkb:ru:phonetic:rus</name>
- <language>rus</language>
+ <language>ru</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ru</layout>
@@ -536,7 +536,7 @@
</engine>
<engine>
<name>xkb:rs::srp</name>
- <language>srp</language>
+ <language>sr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>rs</layout>
@@ -547,7 +547,7 @@
</engine>
<engine>
<name>xkb:si::slv</name>
- <language>slv</language>
+ <language>sl</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>si</layout>
@@ -558,7 +558,7 @@
</engine>
<engine>
<name>xkb:sk::slo</name>
- <language>slo</language>
+ <language>sk</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>sk</layout>
@@ -569,7 +569,7 @@
</engine>
<engine>
<name>xkb:sk:qwerty:slo</name>
- <language>slo</language>
+ <language>sk</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>sk</layout>
@@ -581,7 +581,7 @@
</engine>
<engine>
<name>xkb:es::spa</name>
- <language>spa</language>
+ <language>es</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>es</layout>
@@ -592,7 +592,7 @@
</engine>
<engine>
<name>xkb:es:cat:cat</name>
- <language>cat</language>
+ <language>ca</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>es</layout>
@@ -604,7 +604,7 @@
</engine>
<engine>
<name>xkb:se::swe</name>
- <language>swe</language>
+ <language>sv</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>se</layout>
@@ -615,7 +615,7 @@
</engine>
<engine>
<name>xkb:se:dvorak:swe</name>
- <language>swe</language>
+ <language>sv</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>se</layout>
@@ -627,7 +627,7 @@
</engine>
<engine>
<name>xkb:se:svdvorak:swe</name>
- <language>swe</language>
+ <language>sv</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>se</layout>
@@ -639,7 +639,7 @@
</engine>
<engine>
<name>xkb:ch::ger</name>
- <language>ger</language>
+ <language>de</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ch</layout>
@@ -650,7 +650,7 @@
</engine>
<engine>
<name>xkb:ch:fr:fra</name>
- <language>fra</language>
+ <language>fr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ch</layout>
@@ -662,7 +662,7 @@
</engine>
<engine>
<name>xkb:tr::tur</name>
- <language>tur</language>
+ <language>tr</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>tr</layout>
@@ -673,7 +673,7 @@
</engine>
<engine>
<name>xkb:ua::ukr</name>
- <language>ukr</language>
+ <language>uk</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>ua</layout>
@@ -684,7 +684,7 @@
</engine>
<engine>
<name>xkb:gb:extd:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>gb</layout>
@@ -696,7 +696,7 @@
</engine>
<engine>
<name>xkb:gb:dvorak:eng</name>
- <language>eng</language>
+ <language>en</language>
<license>GPL</license>
<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
<layout>gb</layout>
@@ -707,4 +707,4 @@
<rank>1</rank>
</engine>
</engines>
-</component>
+</component> \ No newline at end of file
diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
index 476b159f..666a5a9a 100644
--- a/ui/gtk3/switcher.vala
+++ b/ui/gtk3/switcher.vala
@@ -2,7 +2,7 @@
*
* ibus - The Input Bus
*
- * Copyright(c) 2011-2014 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright(c) 2011-2016 Peng Huang <shawn.p.huang@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -434,17 +434,18 @@ class Switcher : Gtk.Window {
return language;
language = engine.get_language();
+ int length = language.length;
/* Maybe invalid layout */
- if (language.length < 2)
+ if (length < 2)
return language;
- language = language[0:2].up();
+ language = language.up();
int index = 0;
foreach (var saved_language in m_xkb_languages.get_values()) {
- if (language == saved_language[0:2])
+ if (language == saved_language[0:length])
index++;
}