Apple has a very weird take on voice names, where voices are not only localized, but localized inconsistently depending on the number of variants installed and browser used.
A lot of the complexity in this project comes from documenting altNames because of this approach. Localization wouldn't be that big of an issue if voiceURI was used as a true identifier, but that's unfortunately only the case on Firefox.
The following strings can be localized:
- Name (on rare occasions, but still possible)
- Language
- Country (capitalized in some languages, downcased in others)
- Quality
For the quality variants, there's quite a bit of inconsistency across localizations:
Medium quality
- English: Enhanced
- French: premium
- Spanish: mejorada
- Italian: ottimizzata
- Catalan: millorada
- Portuguese: melhorada
- German: erweitert
- Dutch: verbeterd
High quality
- English: Premium
- Spanish/Italian/German/Portuguese/Dutch: premium
- French: de qualité
- Catalan: prèmium
As you can notice while looking at this list, "premium" can either mean:
- medium quality in French
- and high quality in Spanish, Italian, German, Portuguese and Dutch (and probably other languages too)
For the different browsers, here's how the localized string is created:
Chrome and Edge
If a single variant is installed:
If two or more variants are installed:
- Name (Language (Country))
Which means that it's impossible to select between lower and higher quality variants, since they all use the same name and voiceURI.
Safari
Which means that it's impossible to select between lower and higher quality variants, since they all use the same name and voiceURI.
Firefox and older versions of Chrome/Edge
For the lowest quality voices:
For the higher quality variants:
Which is less than ideal (due to localization of both name and quality), but is a lot more manageable than other browsers.
Links:
Apple has a very weird take on voice names, where voices are not only localized, but localized inconsistently depending on the number of variants installed and browser used.
A lot of the complexity in this project comes from documenting
altNamesbecause of this approach. Localization wouldn't be that big of an issue ifvoiceURIwas used as a true identifier, but that's unfortunately only the case on Firefox.The following strings can be localized:
For the quality variants, there's quite a bit of inconsistency across localizations:
Medium quality
High quality
As you can notice while looking at this list, "premium" can either mean:
For the different browsers, here's how the localized string is created:
Chrome and Edge
If a single variant is installed:
If two or more variants are installed:
Which means that it's impossible to select between lower and higher quality variants, since they all use the same
nameandvoiceURI.Safari
Which means that it's impossible to select between lower and higher quality variants, since they all use the same
nameandvoiceURI.Firefox and older versions of Chrome/Edge
For the lowest quality voices:
For the higher quality variants:
Which is less than ideal (due to localization of both name and quality), but is a lot more manageable than other browsers.
Links: