1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2025-02-24 07:01:05 +00:00

Localize TTS

This commit is contained in:
M66B 2020-07-03 16:44:59 +02:00
parent 0030dce5cc
commit 2c93688d2e
4 changed files with 31 additions and 14 deletions

View file

@ -22,6 +22,8 @@ package eu.faircode.email;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.text.TextUtils;
@ -43,6 +45,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import javax.mail.Address;
@ -484,19 +487,24 @@ public class EntityRule {
}
private boolean onActionTts(Context context, EntityMessage message, JSONObject jargs) {
Locale locale = (message.language == null ? Locale.getDefault() : new Locale(message.language));
Configuration configuration = new Configuration(context.getResources().getConfiguration());
configuration.setLocale(locale);
Resources res = context.createConfigurationContext(configuration).getResources();
StringBuilder sb = new StringBuilder();
sb.append(context.getString(R.string.title_rule_tts_prefix));
sb.append(context.getString(R.string.title_rule_tts_prefix)).append(". ");
if (message.from != null && message.from.length > 0)
sb.append(' ').append(context.getString(R.string.title_from))
.append(' ').append(MessageHelper.formatAddressesShort(message.from));
sb.append(res.getString(R.string.title_rule_tts_from))
.append(' ').append(MessageHelper.formatAddressesShort(message.from)).append(". ");
if (!TextUtils.isEmpty(message.subject))
sb.append(' ').append(context.getString(R.string.title_subject))
.append(' ').append(message.subject);
sb.append(res.getString(R.string.title_rule_tts_subject))
.append(' ').append(message.subject).append(". ");
EntityLog.log(context, "TTS queued language=" + message.language + " text=" + sb.toString());
TTSHelper.speak(context, "rule:" + message.id, sb.toString(), message.language);
TTSHelper.speak(context, "rule:" + message.id, sb.toString(), locale);
return true;
}

View file

@ -3,25 +3,27 @@ package eu.faircode.email;
import android.content.Context;
import android.speech.tts.TextToSpeech;
import androidx.annotation.NonNull;
import java.util.Locale;
public class TTSHelper {
private static boolean initialized;
private static TextToSpeech instance;
static void speak(Context context, final String utteranceId, final String text, final String language) {
static void speak(
@NonNull final Context context,
@NonNull final String utteranceId,
@NonNull final String text,
@NonNull final Locale locale) {
// https://developer.android.com/reference/android/speech/tts/TextToSpeech
// https://android-developers.googleblog.com/2009/09/introduction-to-text-to-speech-in.html
final Runnable speak = new Runnable() {
@Override
public void run() {
if (language != null) {
Locale loc = new Locale(language);
if (instance.setLanguage(loc) < 0)
EntityLog.log(context, "TTS unavailable language=" + loc);
}
boolean available = (instance.setLanguage(locale) >= 0);
EntityLog.log(context, "TTS queued language=" + locale + " available=" + available + " text=" + text);
instance.speak(text, TextToSpeech.QUEUE_ADD, null, utteranceId);
}
};

View file

@ -930,6 +930,7 @@
<string name="title_rule_move">Verplaatsen</string>
<string name="title_rule_copy">Kopiëren (label)</string>
<string name="title_rule_answer">Beantwoorden</string>
<string name="title_rule_tts">Tekst-naar-spraak</string>
<string name="title_rule_automation">Automatisering</string>
<string name="title_rule_caption">Bewerk regel</string>
<string name="title_rule_title">Regel is van toepassing op</string>
@ -965,6 +966,10 @@
<string name="title_rule_no_headers">Header condities kunnen niet worden gecontroleerd</string>
<string name="title_rule_matched">Overeenkomende berichten</string>
<string name="title_rule_no_matches">Geen overeenkomende berichten</string>
<string name="title_rule_tts_setup">Instellingen controleren</string>
<string name="title_rule_tts_prefix">Nieuw bericht</string>
<string name="title_rule_tts_from">Van</string>
<string name="title_rule_tts_subject">Onderwerp</string>
<string name="title_legend_section_synchronize">Synchroniseren</string>
<string name="title_legend_section_folders">Mappen</string>
<string name="title_legend_section_messages">Berichten</string>

View file

@ -1098,6 +1098,8 @@
<string name="title_rule_tts_setup">Check setup</string>
<string name="title_rule_tts_prefix">New message</string>
<string name="title_rule_tts_from">From</string>
<string name="title_rule_tts_subject">Subject</string>
<string name="title_legend_section_synchronize">Synchronize</string>
<string name="title_legend_section_folders">Folders</string>