deskbar-applet r2271 - in trunk: . deskbar/core deskbar/handlers
- From: sebp svn gnome org
- To: svn-commits-list gnome org
- Subject: deskbar-applet r2271 - in trunk: . deskbar/core deskbar/handlers
- Date: Tue, 29 Jul 2008 20:12:35 +0000 (UTC)
Author: sebp
Date: Tue Jul 29 20:12:35 2008
New Revision: 2271
URL: http://svn.gnome.org/viewvc/deskbar-applet?rev=2271&view=rev
Log:
2008-07-29 Sebastian PÃlsterl <sebp cvs gnome org>
* deskbar/core/Utils.py:
Added get_locale_lang function
Fixed bug #544587: unknown locale
* deskbar/handlers/wikipedia-suggest.py:
* deskbar/handlers/yahoo.py:
Use Utils.get_locale_lang to guess language.
Modified:
trunk/ChangeLog
trunk/deskbar/core/Utils.py
trunk/deskbar/handlers/wikipedia-suggest.py
trunk/deskbar/handlers/yahoo.py
Modified: trunk/deskbar/core/Utils.py
==============================================================================
--- trunk/deskbar/core/Utils.py (original)
+++ trunk/deskbar/core/Utils.py Tue Jul 29 20:12:35 2008
@@ -11,6 +11,7 @@
import gobject
import gtk
import gtk.gdk
+import locale
import logging
import os
import re
@@ -208,3 +209,15 @@
return proxies
else:
return None
+
+def get_locale_lang():
+ """
+ @returns language code corresponding to RFC 1766 of currently used locale
+ or None when the code is unknown
+ """
+ try:
+ localelang = locale.getlocale()[0]
+ except ValueError:
+ return None
+
+ return localelang
Modified: trunk/deskbar/handlers/wikipedia-suggest.py
==============================================================================
--- trunk/deskbar/handlers/wikipedia-suggest.py (original)
+++ trunk/deskbar/handlers/wikipedia-suggest.py Tue Jul 29 20:12:35 2008
@@ -1,12 +1,11 @@
from deskbar.core.GconfStore import GconfStore
-from deskbar.core.Utils import load_icon
+from deskbar.core.Utils import load_icon, get_locale_lang
from deskbar.defs import VERSION
from deskbar.handlers.actions.ShowUrlAction import ShowUrlAction
from gettext import gettext as _
import deskbar.interfaces.Match
import deskbar.interfaces.Module
import gtk
-import locale
import logging
import urllib
@@ -65,27 +64,45 @@
'description': _("As you type, Wikipedia will offer suggestions."),
'version': VERSION}
+ DEFAULT_LANG = "en"
+
def __init__(self):
deskbar.interfaces.Module.__init__(self)
+ self._lang = None
self._gconf = GconfStore.get_instance().get_client()
- self._gconf.notify_add(GCONF_KEY, lambda x, y, z, a: self.set_lang(z.value.get_string()))
+ self._gconf.notify_add(GCONF_KEY, self._on_language_changed)
+ self._set_lang()
+
+ def _set_lang(self):
self._lang = self._gconf.get_string(GCONF_KEY)
- # Try to guess language from current locale
if self._lang == None:
- lang = "en"
- # we get (de_DE, UTF-8) and want only de
- localelang = locale.getlocale()[0]
- if localelang != None:
- localelang = localelang.split("_")[0]
- for l in LANGUAGES:
- if l[1] == localelang:
- lang = localelang
- break
- self._gconf.set_string(GCONF_KEY, lang)
-
- def set_lang(self, lang):
- self._lang = lang
-
+ localelang = self._guess_lang()
+ self._gconf.set_string(GCONF_KEY, localelang)
+
+ def _guess_lang(self):
+ """ Try to guess lang """
+ localelang = get_locale_lang()
+ if localelang == None:
+ localelang = self.DEFAULT_LANG
+ else:
+ localelang = localelang.split("_")[0]
+
+ # Check if the language is supported
+ for name, code in LANGUAGES:
+ if code == localelang:
+ return localelang
+
+ # Set fallback
+ localelang = self.DEFAULT_LANG
+
+ return localelang
+
+ def _on_language_changed(self, client, cnxn_id, entry, data):
+ if entry.value == None:
+ self._set_lang()
+ else:
+ self._lang = entry.value.get_string()
+
def query(self, qstring):
args = {'lang': self._lang, 'search': qstring}
url = WIKIPEDIA_SUGGEST_URL + '?' + urllib.urlencode(args)
@@ -148,11 +165,9 @@
vbox.show_all()
self._gconf = GconfStore.get_instance().get_client()
- self._gconf.notify_add(GCONF_KEY, lambda x, y, z, a: self.set_lang(z.value.get_string()))
- self.set_lang (self._gconf.get_string(GCONF_KEY))
-
- def set_lang(self, lang):
- self.entry.set_text (lang)
+ lang = self._gconf.get_string(GCONF_KEY)
+ if lang != None:
+ self.entry.set_text (lang)
def get_lang(self):
return self.entry.get_text()
Modified: trunk/deskbar/handlers/yahoo.py
==============================================================================
--- trunk/deskbar/handlers/yahoo.py (original)
+++ trunk/deskbar/handlers/yahoo.py Tue Jul 29 20:12:35 2008
@@ -1,5 +1,5 @@
from deskbar.core.GconfStore import GconfStore
-from deskbar.core.Utils import strip_html, get_proxy
+from deskbar.core.Utils import strip_html, get_proxy, get_locale_lang
from deskbar.defs import VERSION
from deskbar.handlers.actions.CopyToClipboardAction import CopyToClipboardAction
from deskbar.handlers.actions.ShowUrlAction import ShowUrlAction
@@ -24,6 +24,48 @@
GCONF_YAHOO_LANG = GconfStore.GCONF_DIR+"/yahoo/language"
+# Languages supported by Yahoo
+# see http://developer.yahoo.com/search/languages.html
+LANGUAGES = (
+ (_("Arabic"), "ar"),
+ (_("Bulgarian"), "bg"),
+ (_("Catalan"), "ca"),
+ (_("Chinese simplified"), "szh"),
+ (_("Chinese traditional"), "tzh"),
+ (_("Croatian"), "hr"),
+ (_("Czech"), "cs"),
+ (_("Danish"), "da"),
+ (_("Dutch"), "nl"),
+ (_("English"), "en"),
+ (_("Estonian"), "et"),
+ (_("Finnish"), "fi"),
+ (_("French"), "fr"),
+ (_("German"), "de"),
+ (_("Greek"), "el"),
+ (_("Hebrew"), "he"),
+ (_("Hungarian"), "hu"),
+ (_("Icelandic"), "is"),
+ (_("Indonesian"), "id"),
+ (_("Italian"), "it"),
+ (_("Japanese"), "ja"),
+ (_("Korean"), "ko"),
+ (_("Latvian"), "lv"),
+ (_("Lithuanian"), "lt"),
+ (_("Norwegian"), "no"),
+ (_("Persian"), "fa"),
+ (_("Polish"), "pl"),
+ (_("Portuguese"), "pt"),
+ (_("Romanian"), "ro"),
+ (_("Russian"), "ru"),
+ (_("Slovak"), "sk"),
+ (_("Serbian"), "sr"),
+ (_("Slovenian"), "sl"),
+ (_("Spanish"), "es"),
+ (_("Swedish"), "sv"),
+ (_("Thai"), "th"),
+ (_("Turkish"), "tr"),
+)
+
class OpenYahooAction(ShowUrlAction):
def __init__(self, name, url):
@@ -66,13 +108,47 @@
def __init__(self):
deskbar.interfaces.Module.__init__(self)
self.server = None
+ self._lang = None
self._format_regex = re.compile("format:(\w+)")
-
- def _get_language(self):
- lang = GconfStore.get_instance().get_client().get_string(GCONF_YAHOO_LANG)
- if lang == None:
- lang = self.DEFAULT_LANG
- return lang
+ self._gconf = GconfStore.get_instance().get_client()
+ self._gconf.notify_add(GCONF_YAHOO_LANG, self._on_language_changed)
+ self._set_lang()
+
+ def _on_language_changed(self, client, cnxn_id, entry, data):
+ if entry.value == None:
+ self._set_lang()
+ else:
+ self._lang = entry.value.get_string()
+
+ def _set_lang(self):
+ self._lang = self._gconf.get_string(GCONF_YAHOO_LANG)
+ if self._lang == None:
+ localelang = self._guess_lang()
+ self._gconf.set_string(GCONF_YAHOO_LANG, localelang)
+
+ def _guess_lang(self):
+ """ Try to guess lang """
+ localelang = get_locale_lang()
+ if localelang == None:
+ localelang = self.DEFAULT_LANG
+ else:
+ # Take care of exceptions
+ if localelang == 'zh_CN':
+ localelang = 'szh'
+ elif localelang == 'zh_TW':
+ localelang = 'tzh'
+ else:
+ localelang = localelang.split("_")[0]
+
+ # Check if the language is supported
+ for name, code in LANGUAGES:
+ if code == localelang:
+ return localelang
+
+ # Set fallback
+ localelang = self.DEFAULT_LANG
+
+ return localelang
def _get_parameters_from_query(self, qstring):
"""
@@ -80,7 +156,7 @@
"""
params = {'appid': YAHOO_API_KEY,
'results': MAX_RESULTS,
- 'language': self._get_language()}
+ 'language': self._lang}
match = self._format_regex.search(qstring)
if match != None:
format = match.group(1)
@@ -328,47 +404,6 @@
class YahooSearchConfigDialog(gtk.Dialog):
- # Languages supported by Yahoo
- # see http://developer.yahoo.com/search/languages.html
- LANGUAGES = (
- (_("Arabic"), "ar"),
- (_("Bulgarian"), "bg"),
- (_("Catalan"), "ca"),
- (_("Chinese simplified"), "szh"),
- (_("Chinese traditional"), "tzh"),
- (_("Croatian"), "hr"),
- (_("Czech"), "cs"),
- (_("Danish"), "da"),
- (_("Dutch"), "nl"),
- (_("English"), "en"),
- (_("Estonian"), "et"),
- (_("Finnish"), "fi"),
- (_("French"), "fr"),
- (_("German"), "de"),
- (_("Greek"), "el"),
- (_("Hebrew"), "he"),
- (_("Hungarian"), "hu"),
- (_("Icelandic"), "is"),
- (_("Indonesian"), "id"),
- (_("Italian"), "it"),
- (_("Japanese"), "ja"),
- (_("Korean"), "ko"),
- (_("Latvian"), "lv"),
- (_("Lithuanian"), "lt"),
- (_("Norwegian"), "no"),
- (_("Persian"), "fa"),
- (_("Polish"), "pl"),
- (_("Portuguese"), "pt"),
- (_("Romanian"), "ro"),
- (_("Russian"), "ru"),
- (_("Slovak"), "sk"),
- (_("Serbian"), "sr"),
- (_("Slovenian"), "sl"),
- (_("Spanish"), "es"),
- (_("Swedish"), "sv"),
- (_("Thai"), "th"),
- (_("Turkish"), "tr"),
- )
def __init__(self, parent):
gtk.Dialog.__init__(self, title=_("Configure Yahoo!"),
@@ -386,7 +421,7 @@
self.vbox2.pack_start(self.label, False)
self.liststore = gtk.ListStore(str, str)
- for lang in self.LANGUAGES:
+ for lang in LANGUAGES:
self.liststore.append( lang )
self.combobox = gtk.ComboBox(self.liststore)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]