[orca] Fix for Orca ignoring dialects in profile-based language switching
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Fix for Orca ignoring dialects in profile-based language switching
- Date: Sat, 23 Feb 2013 23:21:39 +0000 (UTC)
commit e0480c659246479bb7326ea6ec856c090e223e81
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Sat Feb 23 18:21:02 2013 -0500
Fix for Orca ignoring dialects in profile-based language switching
src/orca/acss.py | 4 ++++
src/orca/orca_gui_prefs.py | 8 ++++++--
src/orca/settings_manager.py | 6 +++++-
src/orca/speechdispatcherfactory.py | 4 +++-
src/orca/speechserver.py | 4 +++-
5 files changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/src/orca/acss.py b/src/orca/acss.py
index dd18767..17e1b76 100644
--- a/src/orca/acss.py
+++ b/src/orca/acss.py
@@ -105,3 +105,7 @@ class ACSS(dict):
def getLocale(self):
family = self.get(ACSS.FAMILY, {})
return family.get('locale')
+
+ def getDialect(self):
+ family = self.get(ACSS.FAMILY, {})
+ return family.get('dialect')
diff --git a/src/orca/orca_gui_prefs.py b/src/orca/orca_gui_prefs.py
index 05f3021..ed77a11 100644
--- a/src/orca/orca_gui_prefs.py
+++ b/src/orca/orca_gui_prefs.py
@@ -470,13 +470,14 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
return familyName
- def _setFamilyNameForVoiceType(self, voiceType, name, language):
+ def _setFamilyNameForVoiceType(self, voiceType, name, language, dialect):
"""Sets the name of the voice family for the given voice type.
Arguments:
- voiceType: one of DEFAULT, UPPERCASE, HYPERLINK, SYSTEM
- name: the name of the voice family to set.
- language: the locale of the voice family to set.
+ - dialect: the dialect of the voice family to set.
"""
family = self._getKeyValueForVoiceType(voiceType,
@@ -485,12 +486,14 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
if family:
family[speechserver.VoiceFamily.NAME] = name
family[speechserver.VoiceFamily.LOCALE] = language
+ family[speechserver.VoiceFamily.DIALECT] = dialect
else:
voiceACSS = self._getACSSForVoiceType(voiceType)
voiceACSS[acss.ACSS.FAMILY] = {}
voiceACSS[acss.ACSS.FAMILY][speechserver.VoiceFamily.NAME] = name
voiceACSS[acss.ACSS.FAMILY][speechserver.VoiceFamily.LOCALE] = \
language
+ voiceACSS[acss.ACSS.FAMILY][speechserver.VoiceFamily.DIALECT] = dialect
#voiceACSS = self._getACSSForVoiceType(voiceType)
#settings.voices[voiceType] = voiceACSS
@@ -2222,8 +2225,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
family = self.speechFamiliesChoices[selectedIndex]
name = family[speechserver.VoiceFamily.NAME]
language = family[speechserver.VoiceFamily.LOCALE]
+ dialect = family[speechserver.VoiceFamily.DIALECT]
voiceType = self.get_widget("voiceTypesCombo").get_active()
- self._setFamilyNameForVoiceType(voiceType, name, language)
+ self._setFamilyNameForVoiceType(voiceType, name, language, dialect)
except:
debug.printException(debug.LEVEL_SEVERE)
diff --git a/src/orca/settings_manager.py b/src/orca/settings_manager.py
index 055233f..61bc82d 100644
--- a/src/orca/settings_manager.py
+++ b/src/orca/settings_manager.py
@@ -275,7 +275,11 @@ class SettingsManager(object):
def getVoiceLocale(self, voice='default'):
voices = self.getSetting('voices')
v = voices.get(voice, {})
- return v.getLocale()
+ lang = v.getLocale()
+ dialect = v.getDialect()
+ if dialect and len(str(dialect)) == 2:
+ lang = "%s_%s" % (lang, dialect.upper())
+ return lang
def _getGeneral(self, profile=None):
"""Get from the active backend the general settings for
diff --git a/src/orca/speechdispatcherfactory.py b/src/orca/speechdispatcherfactory.py
index 9d992b6..1788eda 100644
--- a/src/orca/speechdispatcherfactory.py
+++ b/src/orca/speechdispatcherfactory.py
@@ -405,8 +405,9 @@ class SpeechServer(speechserver.SpeechServer):
locale = getlocale(LC_MESSAGES)[0]
if locale is None or locale == 'C':
lang = None
+ dialect = None
else:
- lang = locale.split('_')[0]
+ lang, dialect = locale.split('_')
voices = ((self._default_voice_name, lang, None),)
try:
# This command is not available with older SD versions.
@@ -418,6 +419,7 @@ class SpeechServer(speechserver.SpeechServer):
families = [speechserver.VoiceFamily({ \
speechserver.VoiceFamily.NAME: name,
#speechserver.VoiceFamily.GENDER: speechserver.VoiceFamily.MALE,
+ speechserver.VoiceFamily.DIALECT: dialect,
speechserver.VoiceFamily.LOCALE: lang})
for name, lang, dialect in voices]
return families
diff --git a/src/orca/speechserver.py b/src/orca/speechserver.py
index 5667950..b70bddb 100644
--- a/src/orca/speechserver.py
+++ b/src/orca/speechserver.py
@@ -46,6 +46,7 @@ class VoiceFamily(dict):
NAME = "name"
GENDER = "gender"
LOCALE = "locale"
+ DIALECT = "dialect"
MALE = "male"
FEMALE = "female"
@@ -53,7 +54,8 @@ class VoiceFamily(dict):
settings = {
NAME : None,
GENDER : None,
- LOCALE : None
+ LOCALE : None,
+ DIALECT: None,
}
def __init__(self, props):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]