Settings: change the TTS text to use the current locale

Google TTS currently does not support language auto-switching.
Also, not all languages are available in TTS at all times.
This means that TTS cannot properly handle text in other languages / scripts
than the current language.
Languages with different scripts would not be read at all, and the others
would be read with "bad pronunciation", to the point of being unrecognizable.

This change is not a full fix, but makes things slightly better by using
the default locale for the contentDescription in the language / region lists.

This might be a bit unsettling, as the label will not match the sound.
The label will show "Deutsch" or "Русский" and text-to-speech will say "German"
or "Russian" (for English UI), or "Allemand" or "Russe" (if the UI is French).
Might also say nothing, if the current UI language has no text-to-speech engine.

But this is the best we can do, and better that what we get if we do nothing.

Bug: 28087937
Change-Id: I54d49ec96a10bab3e31198e162230fb277426e66
This commit is contained in:
Mihai Nita
2016-04-19 09:20:20 -07:00
parent c3ab03ecdb
commit d86cba770d
2 changed files with 7 additions and 4 deletions

View File

@@ -152,8 +152,9 @@ class LocaleDragAndDropAdapter
public void onBindViewHolder(final CustomViewHolder holder, int i) { public void onBindViewHolder(final CustomViewHolder holder, int i) {
final LocaleStore.LocaleInfo feedItem = mFeedItemList.get(i); final LocaleStore.LocaleInfo feedItem = mFeedItemList.get(i);
final LocaleDragCell dragCell = holder.getLocaleDragCell(); final LocaleDragCell dragCell = holder.getLocaleDragCell();
String label = feedItem.getFullNameNative(); final String label = feedItem.getFullNameNative();
dragCell.setLabel(label); final String description = feedItem.getFullNameInUiLanguage();
dragCell.setLabelAndDescription(label, description);
dragCell.setLocalized(feedItem.isTranslated()); dragCell.setLocalized(feedItem.isTranslated());
dragCell.setMiniLabel(mNumberFormatter.format(i + 1)); dragCell.setMiniLabel(mNumberFormatter.format(i + 1));
dragCell.setShowCheckbox(mRemoveMode); dragCell.setShowCheckbox(mRemoveMode);
@@ -166,7 +167,7 @@ class LocaleDragAndDropAdapter
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
LocaleStore.LocaleInfo feedItem = LocaleStore.LocaleInfo feedItem =
(LocaleStore.LocaleInfo) holder.getLocaleDragCell().getTag(); (LocaleStore.LocaleInfo) dragCell.getTag();
feedItem.setChecked(isChecked); feedItem.setChecked(isChecked);
} }
}); });

View File

@@ -87,9 +87,11 @@ class LocaleDragCell extends RelativeLayout {
invalidate(); invalidate();
} }
public void setLabel(String labelText) { public void setLabelAndDescription(String labelText, String description) {
mLabel.setText(labelText); mLabel.setText(labelText);
mCheckbox.setText(labelText); mCheckbox.setText(labelText);
mLabel.setContentDescription(description);
mCheckbox.setContentDescription(description);
invalidate(); invalidate();
} }