Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@gmail.com>2009-10-15 15:19:38 (GMT)
committer Sayamindu Dasgupta <sayamindu@gmail.com>2009-10-15 15:19:38 (GMT)
commitccc7f9e671ad6704718ab89bb2bda484a439523f (patch)
tree221e25f433587c2291140ece8b8e54d687bffeec
parenteadc8a4c002fa25f4cc9c14682e22ee2e1d29020 (diff)
Add languagenames.py: To decode ISO 639 language codes
-rw-r--r--languagenames.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/languagenames.py b/languagenames.py
new file mode 100644
index 0000000..c0f5633
--- /dev/null
+++ b/languagenames.py
@@ -0,0 +1,55 @@
+#! /usr/bin/env python
+
+# Copyright (C) 2009 Sayamindu Dasgupta <sayamindu@laptop.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import libxml2
+
+_ISO_639_XML_PATH = '/usr/share/xml/iso-codes/iso_639.xml'
+
+
+
+class LanguageNames(object):
+ def __init__(self):
+ try:
+ self._xmldoc = libxml2.parseFile('/usr/share/xml/iso-codes/iso_639.xml')
+ except libxml2.parserError:
+ self._xmldoc = None
+ return
+
+ self._eroot = self._xmldoc.firstElementChild()
+
+ def close(self):
+ if self._xmldoc is not None:
+ self._xmldoc.free()
+
+ def get_full_language_name(self, code):
+ if self._xmldoc is None:
+ return code
+
+ for child in self._eroot.children:
+ if child.properties is not None:
+ for property in child.properties:
+ if property.get_content() == code:
+ return self._real_get_full_language_name(child)
+
+ return code
+
+ def _real_get_full_language_name(self, node):
+ for property in node.properties:
+ if property.get_name() == 'name':
+ return property.get_content()
+