@@ -110,6 +110,8 @@ def LanguagesDict():
110110 "ee" : "Ɛʋɛ" ,
111111 "el" : "Ελληνικά" ,
112112 "en" : "English" ,
113+ "en-GB" : "English, United Kingdom" ,
114+ "en-US" : "English, United States" ,
113115 "eo" : "Esperanto" ,
114116 "es" : "Español" ,
115117 "fa" : "فارسی" ,
@@ -240,6 +242,9 @@ def LanguagesDict():
240242 "yo" : "Yorùbá" ,
241243 "za" : "Cuengh / Tôô / 壮语" ,
242244 "zh" : "中文" ,
245+ "zh-HANS" : "Chinese, Simplified" ,
246+ "zh-HANT" : "Chinese, Traditional" ,
247+ "zh-TW" : "Chinese, Traditional, Taiwan" ,
243248 "zu" : "isiZulu"
244249 }
245250 return languages
@@ -251,12 +256,31 @@ def GetLanguages(self):
251256 self .m_choiceLanguage .Clear ()
252257 self .m_choiceLanguage .Append (_ ("Use Voice's Language" ) + " (Auto)" )
253258 #populate the available language names in the dialog
254- for f in os .listdir (UserInterface .path_to_languages_folder ()):
255- if os .path .isdir (UserInterface .path_to_languages_folder ()+ "\\ " + f ):
256- if languages_dict .get (f , 'missing' ) == 'missing' :
257- self .m_choiceLanguage .Append (f + " (" + f + ")" )
258- else :
259- self .m_choiceLanguage .Append (languages_dict [f ] + " (" + f + ")" )
259+ #the implemented languages are in folders named using the relevant ISO 639-1 code https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
260+ for language in os .listdir (UserInterface .path_to_languages_folder ()):
261+ if os .path .isdir (os .path .join (UserInterface .path_to_languages_folder (),language )):
262+ path_to_language_folder = os .path .join (UserInterface .path_to_languages_folder (), language )
263+ #only add this language if there is a xxx_Rules.yaml file
264+ files = glob .glob (os .path .join (path_to_language_folder ,"*_Rules.yaml" ))
265+ if files :
266+ #add to the listbox the text for this language together with the code
267+ if languages_dict .get (language , 'missing' ) != 'missing' :
268+ self .m_choiceLanguage .Append (languages_dict [language ] + " (" + language + ")" )
269+ else :
270+ self .m_choiceLanguage .Append (language + " (" + language + ")" )
271+ #the language variants are in folders named using ISO 3166-1 alpha-2 codes https://en.wikipedia.org/wiki/ISO_3166-2
272+ #check if there are language variants in the language folder
273+ for variant in os .listdir (path_to_language_folder ):
274+ if os .path .isdir (os .path .join (path_to_language_folder , variant )):
275+ if variant != "SharedRules" :
276+ #add to the listbox the text for this language variant together with the code
277+ if languages_dict .get (language + "-" + variant .upper (), 'missing' ) != 'missing' :
278+ self .m_choiceLanguage .Append (languages_dict [language + "-" + variant .upper ()] + " (" + language + "-" + variant + ")" )
279+ else :
280+ if languages_dict .get (language , 'missing' ) != 'missing' :
281+ self .m_choiceLanguage .Append (languages_dict [language ] + " (" + language + "-" + variant + ")" )
282+ else :
283+ self .m_choiceLanguage .Append (language + " (" + language + "-" + variant + ")" )
260284
261285 def GetLanguageCode (self ):
262286 lang_selection = self .m_choiceLanguage .GetStringSelection ()
0 commit comments