Skip to content

Instantly share code, notes, and snippets.

@Koze
Last active October 27, 2019 17:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Koze/8cdaf482ff237e2a55671cae56b3c8ae to your computer and use it in GitHub Desktop.
Save Koze/8cdaf482ff237e2a55671cae56b3c8ae to your computer and use it in GitHub Desktop.
Workaround for that AVSpeechSynthesisVoice currentLanguageCode returns application language.
extension AVSpeechSynthesisVoice {
private static let availableLanguages: Set<String> = Set(AVSpeechSynthesisVoice.speechVoices().map{ $0.language })
class func currentLanguageCodeWorkaround() -> String {
if #available(iOS 13, *) {
if let preferredLanguage = Locale.preferredLanguages.first {
let locale = Locale(identifier: preferredLanguage)
if let languageCode = locale.languageCode,
let regionCode = locale.regionCode {
let voiceLanguage = "\(languageCode)-\(regionCode)"
if availableLanguages.contains(voiceLanguage) {
return voiceLanguage
}
}
}
return "en-US"
}
else {
return currentLanguageCode()
}
}
}
@Koze
Copy link
Author

Koze commented Oct 27, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment