diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index fea06e7b36..c3a785a987 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -59,6 +59,7 @@ import android.net.NetworkRequest;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.LocaleList;
import android.os.OperationCanceledException;
import android.provider.ContactsContract;
import android.provider.MediaStore;
@@ -252,6 +253,7 @@ public class FragmentCompose extends FragmentBase {
private TextView tvReference;
private ImageButton ibCloseRefHint;
private ImageButton ibWriteAboveBelow;
+ private TextView tvLanguage;
private ImageButton ibReferenceEdit;
private ImageButton ibReferenceImages;
private View vwAnchor;
@@ -369,6 +371,7 @@ public class FragmentCompose extends FragmentBase {
tvReference = view.findViewById(R.id.tvReference);
ibCloseRefHint = view.findViewById(R.id.ibCloseRefHint);
ibWriteAboveBelow = view.findViewById(R.id.ibWriteAboveBelow);
+ tvLanguage = view.findViewById(R.id.tvLanguage);
ibReferenceEdit = view.findViewById(R.id.ibReferenceEdit);
ibReferenceImages = view.findViewById(R.id.ibReferenceImages);
vwAnchor = view.findViewById(R.id.vwAnchor);
@@ -947,6 +950,7 @@ public class FragmentCompose extends FragmentBase {
grpSignature.setVisibility(View.GONE);
grpReferenceHint.setVisibility(View.GONE);
ibWriteAboveBelow.setVisibility(View.GONE);
+ tvLanguage.setVisibility(View.GONE);
ibReferenceEdit.setVisibility(View.GONE);
ibReferenceImages.setVisibility(View.GONE);
tvReference.setVisibility(View.GONE);
@@ -6236,6 +6240,9 @@ public class FragmentCompose extends FragmentBase {
// Strip newline of reply header
if (spannedRef.length() > 0 && spannedRef.charAt(0) == '\n')
spannedRef = (Spanned) spannedRef.subSequence(1, spannedRef.length());
+
+ Locale ref_lang = TextHelper.detectLanguage(context, spannedRef.toString());
+ args.putSerializable("ref_lang", ref_lang);
}
args.putBoolean("ref_has_images", spannedRef != null &&
@@ -6262,6 +6269,25 @@ public class FragmentCompose extends FragmentBase {
boolean ref_has_images = args.getBoolean("ref_has_images");
+ Locale ref_lang = (Locale) args.getSerializable("ref_lang");
+ if (ref_lang != null) {
+ String dl = ref_lang.getDisplayLanguage();
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
+ Locale l = Locale.getDefault();
+ if (Objects.equals(dl, l.getDisplayLanguage()))
+ ref_lang = null;
+ } else {
+ LocaleList ll = getResources().getConfiguration().getLocales();
+ for (int i = 0; i < ll.size(); i++) {
+ Locale l = ll.get(i);
+ if (Objects.equals(dl, l.getDisplayLanguage())) {
+ ref_lang = null;
+ break;
+ }
+ }
+ }
+ }
+
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean ref_hint = prefs.getBoolean("compose_reference", true);
boolean write_below = prefs.getBoolean("write_below", false);
@@ -6273,6 +6299,8 @@ public class FragmentCompose extends FragmentBase {
ibWriteAboveBelow.setVisibility(text[1] == null ||
draft.wasforwardedfrom != null || BuildConfig.PLAY_STORE_RELEASE
? View.GONE : View.VISIBLE);
+ tvLanguage.setText(ref_lang == null ? null : ref_lang.getDisplayLanguage());
+ tvLanguage.setVisibility(ref_lang == null ? View.GONE : View.VISIBLE);
ibReferenceEdit.setVisibility(text[1] == null ? View.GONE : View.VISIBLE);
ibReferenceImages.setVisibility(ref_has_images && !show_images ? View.VISIBLE : View.GONE);
diff --git a/app/src/main/res/layout/fragment_compose.xml b/app/src/main/res/layout/fragment_compose.xml
index 0f4a8e0f83..a21e3c5fc6 100644
--- a/app/src/main/res/layout/fragment_compose.xml
+++ b/app/src/main/res/layout/fragment_compose.xml
@@ -436,6 +436,19 @@
app:layout_constraintTop_toBottomOf="@id/tvReferenceHint"
app:srcCompat="@drawable/abovebelow" />
+
+