@@ -60,19 +60,40 @@ def path_to_languages_folder():
6060 return os .path .expanduser ('~' )+ "\\ AppData\\ Roaming\\ nvda\\ addons\\ mathCAT\\ globalPlugins\\ MathCAT\\ Rules\\ Languages"
6161
6262 def GetLanguages (self ):
63- #clear the language choices
63+ # initialise the language list
64+ languages_dict = {}
65+ try :
66+ #load list of languages
67+ full_path_to_languages_dict = os .path .expanduser ('~' ) + "\\ AppData\\ Roaming\\ nvda\\ addons\\ MathCAT\\ globalPlugins\\ MathCAT\\ Rules\\ Languages\\ languages_list.yaml"
68+ with open (full_path_to_languages_dict , encoding = 'utf-8' ) as f :
69+ languages_dict = yaml .load (f , Loader = yaml .FullLoader )
70+ except :
71+ #something went wrong loading the list of languages
72+ languages_dict ["en" ] = "English"
73+
74+ #clear the language names in the dialog
6475 self .m_choiceLanguage .Clear ()
65- #populate the language choices
76+
77+ #populate the available language names in the dialog
6678 for f in os .listdir (UserInterface .path_to_languages_folder ()):
67- if os .path .isdir (UserInterface .path_to_languages_folder ()+ "\\ " + f ):
68- self .m_choiceLanguage .Append (f )
79+ if os .path .isdir (UserInterface .path_to_languages_folder ()+ "\\ " + f ):
80+ if languages_dict .get (f , 'missing' ) == 'missing' :
81+ self .m_choiceLanguage .Append (f + " (" + f + ")" )
82+ else :
83+ self .m_choiceLanguage .Append (languages_dict [f ] + " (" + f + ")" )
84+
85+ def GetLanguageCode (self ):
86+ langselection = self .m_choiceLanguage .GetStringSelection ()
87+ langcode = langselection [langselection .find ("(" )+ 1 : langselection .find (")" )]
88+ return langcode
6989
7090 def GetSpeechStyles (self , this_SpeechStyle ):
7191 #clear the SpeechStyle choices
7292 self .m_choiceSpeechStyle .Clear ()
73- #get the currently selected language
74- this_language = self .m_choiceLanguage .GetStringSelection ()
75- this_path = os .path .expanduser ('~' )+ "\\ AppData\\ Roaming\\ nvda\\ addons\\ MathCAT\\ globalPlugins\\ MathCAT\\ Rules\\ Languages\\ " + this_language + "\\ *_Rules.yaml"
93+ #get the currently selected language code
94+ this_language_code = UserInterface .GetLanguageCode (self )
95+
96+ this_path = os .path .expanduser ('~' )+ "\\ AppData\\ Roaming\\ nvda\\ addons\\ MathCAT\\ globalPlugins\\ MathCAT\\ Rules\\ Languages\\ " + this_language_code + "\\ *_Rules.yaml"
7697 #populate the m_choiceSpeechStyle choices
7798 for f in glob .glob (this_path ):
7899 fname = os .path .basename (f )
@@ -89,12 +110,24 @@ def set_ui_values(self):
89110 try :
90111 self .m_choiceImpairment .SetSelection (Speech_Impairment .index (user_preferences ["Speech" ]["Impairment" ]))
91112 try :
92- self .m_choiceLanguage .SetStringSelection (user_preferences ["Speech" ]["Language" ])
113+ langpref = user_preferences ["Speech" ]["Language" ]
114+ i = 0
115+ while "(" + langpref + ")" not in self .m_choiceLanguage .GetString (i ):
116+ i = i + 1
117+ if i == self .m_choiceLanguage .GetCount ():
118+ break
119+ if "(" + langpref + ")" in self .m_choiceLanguage .GetString (i ):
120+ self .m_choiceLanguage .SetSelection (i )
121+ else :
122+ self .m_choiceLanguage .SetSelection (0 )
93123 except :
94124 #the language in the settings file is not in the folder structure, something went wrong, set to the first in the list
95125 self .m_choiceLanguage .SetSelection (0 )
96- #now get the available SpeechStyles from the folder structure and set to the preference setting is possible
97- self .GetSpeechStyles (user_preferences ["Speech" ]["SpeechStyle" ])
126+ try :
127+ #now get the available SpeechStyles from the folder structure and set to the preference setting is possible
128+ self .GetSpeechStyles (user_preferences ["Speech" ]["SpeechStyle" ])
129+ except :
130+ self .m_choiceSpeechStyle .Append ("Error when setting SpeechStyle for " + self .m_choiceLanguage .GetStringSelection ())
98131 #set the rest of the UI elements
99132 self .m_choiceSpeechAmount .SetSelection (Speech_Verbosity .index (user_preferences ["Speech" ]["Verbosity" ]))
100133 self .m_sliderRelativeSpeed .SetValue (user_preferences ["Speech" ]["MathRate" ])
@@ -119,7 +152,7 @@ def get_ui_values(self):
119152 global user_preferences
120153 # read the values from the UI and update the user preferences dictionary
121154 user_preferences ["Speech" ]["Impairment" ] = Speech_Impairment [self .m_choiceImpairment .GetSelection ()]
122- user_preferences ["Speech" ]["Language" ] = self .m_choiceLanguage . GetStringSelection ()
155+ user_preferences ["Speech" ]["Language" ] = self .GetLanguageCode ()
123156 user_preferences ["Speech" ]["SpeechStyle" ] = self .m_choiceSpeechStyle .GetStringSelection ()
124157 user_preferences ["Speech" ]["Verbosity" ] = Speech_Verbosity [self .m_choiceSpeechAmount .GetSelection ()]
125158 user_preferences ["Speech" ]["MathRate" ] = self .m_sliderRelativeSpeed .GetValue ()
0 commit comments