Recognize language of subject

This commit is contained in:
M66B 2021-01-25 14:49:56 +01:00
parent 7d017095cc
commit 497c6bc221
6 changed files with 40 additions and 31 deletions

View File

@ -1505,7 +1505,7 @@ class Core {
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
message.preview = HtmlHelper.getPreview(text);
message.language = HtmlHelper.getLanguage(context, text);
message.language = HtmlHelper.getLanguage(context, message.subject, text);
db.message().setMessageContent(message.id,
true,
message.language,
@ -2217,7 +2217,7 @@ class Core {
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
message.preview = HtmlHelper.getPreview(text);
message.language = HtmlHelper.getLanguage(context, text);
message.language = HtmlHelper.getLanguage(context, message.subject, text);
db.message().setMessageContent(message.id,
true,
message.language,
@ -3021,7 +3021,7 @@ class Core {
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
message.preview = HtmlHelper.getPreview(text);
message.language = HtmlHelper.getLanguage(context, text);
message.language = HtmlHelper.getLanguage(context, message.subject, text);
db.message().setMessageContent(message.id,
true,
message.language,
@ -3460,7 +3460,7 @@ class Core {
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
message.preview = HtmlHelper.getPreview(text);
message.language = HtmlHelper.getLanguage(context, text);
message.language = HtmlHelper.getLanguage(context, message.subject, text);
db.message().setMessageContent(message.id,
true,
message.language,

View File

@ -613,7 +613,7 @@ public class EntityRule {
Helper.writeText(file, body);
String text = HtmlHelper.getFullText(body);
reply.preview = HtmlHelper.getPreview(text);
reply.language = HtmlHelper.getLanguage(context, text);
reply.language = HtmlHelper.getLanguage(context, reply.subject, text);
db.message().setMessageContent(reply.id,
true,
reply.language,

View File

@ -3928,7 +3928,7 @@ public class FragmentCompose extends FragmentBase {
String text = HtmlHelper.getFullText(html);
data.draft.preview = HtmlHelper.getPreview(text);
data.draft.language = HtmlHelper.getLanguage(context, text);
data.draft.language = HtmlHelper.getLanguage(context, data.draft.subject, text);
db.message().setMessageContent(data.draft.id,
true,
data.draft.language,
@ -4084,7 +4084,7 @@ public class FragmentCompose extends FragmentBase {
String text = HtmlHelper.getFullText(html);
data.draft.preview = HtmlHelper.getPreview(text);
data.draft.language = HtmlHelper.getLanguage(context, text);
data.draft.language = HtmlHelper.getLanguage(context, data.draft.subject, text);
db.message().setMessageContent(data.draft.id,
true,
data.draft.language,
@ -4603,7 +4603,7 @@ public class FragmentCompose extends FragmentBase {
String full = HtmlHelper.getFullText(body);
draft.preview = HtmlHelper.getPreview(full);
draft.language = HtmlHelper.getLanguage(context, full);
draft.language = HtmlHelper.getLanguage(context, draft.subject, full);
db.message().setMessageContent(draft.id,
true,
draft.language,

View File

@ -1708,14 +1708,22 @@ public class HtmlHelper {
Log.d(document.head().html());
}
static String getLanguage(Context context, String text) {
static String getLanguage(Context context, String subject, String text) {
try {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean language_detection = prefs.getBoolean("language_detection", false);
if (!language_detection)
return null;
Locale locale = TextHelper.detectLanguage(context, text);
StringBuilder sb = new StringBuilder();
if (!TextUtils.isEmpty(subject))
sb.append(subject).append('\n');
if (!TextUtils.isEmpty(text))
sb.append(text);
if (sb.length() == 0)
return null;
Locale locale = TextHelper.detectLanguage(context, sb.toString());
return (locale == null ? null : locale.getLanguage());
} catch (Throwable ex) {
Log.e(ex);

View File

@ -539,7 +539,7 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
body = body.replace("<div x-plain=\"true\">", "<div>");
String text = HtmlHelper.getFullText(body);
String language = HtmlHelper.getLanguage(this, text);
String language = HtmlHelper.getLanguage(this, message.subject, text);
String preview = HtmlHelper.getPreview(text);
try {

View File

@ -283,37 +283,38 @@ public class ServiceUI extends IntentService {
boolean prefix_once = prefs.getBoolean("prefix_once", true);
boolean plain_only = prefs.getBoolean("plain_only", false);
DB db = DB.getInstance(this);
EntityMessage ref = db.message().getMessage(id);
if (ref == null)
throw new IllegalArgumentException("message not found");
EntityIdentity identity = db.identity().getIdentity(ref.identity);
if (identity == null)
throw new IllegalArgumentException("identity not found");
EntityFolder outbox = db.folder().getOutbox();
if (outbox == null)
throw new IllegalArgumentException("outbox not found");
String subject = (ref.subject == null ? "" : ref.subject);
if (prefix_once) {
String re = getString(R.string.title_subject_reply, "");
subject = subject.replaceAll("(?i)" + Pattern.quote(re.trim()), "").trim();
}
Bundle results = RemoteInput.getResultsFromIntent(intent);
String body = results.getString("text");
if (body != null)
body = "<p>" + body.replaceAll("\\r?\\n", "<br>") + "</p>";
String text = HtmlHelper.getFullText(body);
String language = HtmlHelper.getLanguage(this, text);
String language = HtmlHelper.getLanguage(this, ref.subject, text);
String preview = HtmlHelper.getPreview(text);
DB db = DB.getInstance(this);
try {
db.beginTransaction();
EntityMessage ref = db.message().getMessage(id);
if (ref == null)
throw new IllegalArgumentException("message not found");
EntityIdentity identity = db.identity().getIdentity(ref.identity);
if (identity == null)
throw new IllegalArgumentException("identity not found");
EntityFolder outbox = db.folder().getOutbox();
if (outbox == null)
throw new IllegalArgumentException("outbox not found");
String subject = (ref.subject == null ? "" : ref.subject);
if (prefix_once) {
String re = getString(R.string.title_subject_reply, "");
subject = subject.replaceAll("(?i)" + Pattern.quote(re.trim()), "").trim();
}
EntityMessage reply = new EntityMessage();
reply.account = identity.account;
reply.folder = outbox.id;