mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 15:11:03 +00:00
Localize TTS
This commit is contained in:
parent
0030dce5cc
commit
2c93688d2e
4 changed files with 31 additions and 14 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue