diff --git a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java index 9994dbed0..c49d2bdd6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java @@ -172,7 +172,7 @@ public class HelpFragment extends LoggingFragment { } return SupportEmailUtil.generateSupportEmailBody(requireContext(), - getString(R.string.HelpFragment__signal_android_support_request), + R.string.HelpFragment__signal_android_support_request, problem.getText().toString() + "\n\n", suffix.toString()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java index 424cc9776..401f0da81 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java @@ -198,7 +198,7 @@ public class PinRestoreEntryFragment extends LoggingFragment { })) .setNeutralButton(R.string.PinRestoreEntryFragment_contact_support, (dialog, which) -> { String body = SupportEmailUtil.generateSupportEmailBody(requireContext(), - getString(R.string.PinRestoreEntryFragment_signal_registration_need_help_with_pin), + R.string.PinRestoreEntryFragment_signal_registration_need_help_with_pin, null, null); CommunicationActions.openEmail(requireContext(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterCodeFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterCodeFragment.java index f4ee4c427..73edfce0c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterCodeFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterCodeFragment.java @@ -335,7 +335,7 @@ public final class EnterCodeFragment extends BaseRegistrationFragment private void sendEmailToSupport() { String body = SupportEmailUtil.generateSupportEmailBody(requireContext(), - getString(R.string.RegistrationActivity_code_support_subject), + R.string.RegistrationActivity_code_support_subject, null, null); CommunicationActions.openEmail(requireContext(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SupportEmailUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/SupportEmailUtil.java index abc7e3172..bb94e384e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SupportEmailUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SupportEmailUtil.java @@ -1,11 +1,14 @@ package org.thoughtcrime.securesms.util; import android.content.Context; +import android.content.res.Resources; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import org.signal.core.util.EnglishResourceUtil; import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.keyvalue.SignalStore; @@ -24,7 +27,7 @@ public final class SupportEmailUtil { * Generates a support email body with system info near the top. */ public static @NonNull String generateSupportEmailBody(@NonNull Context context, - @NonNull String subject, + @StringRes int subject, @Nullable String prefix, @Nullable String suffix) { @@ -33,10 +36,12 @@ public final class SupportEmailUtil { return String.format("%s\n%s\n%s", prefix, buildSystemInfo(context, subject), suffix); } - private static @NonNull String buildSystemInfo(@NonNull Context context, @NonNull String subject) { + private static @NonNull String buildSystemInfo(@NonNull Context context, @StringRes int subject) { + Resources englishResources = EnglishResourceUtil.getEnglishResources(context); + return "--- " + context.getString(R.string.HelpFragment__support_info) + " ---" + "\n" + - context.getString(R.string.SupportEmailUtil_subject) + " " + subject + + context.getString(R.string.SupportEmailUtil_filter) + " " + englishResources.getString(subject) + "\n" + context.getString(R.string.SupportEmailUtil_device_info) + " " + getDeviceInfo() + "\n" + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a727d72e2..500122658 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1641,7 +1641,7 @@ support@signal.org - Subject: + Filter: Signal Android Support Request Device info: Android version: diff --git a/core-util/src/main/java/org/signal/core/util/EnglishResourceUtil.java b/core-util/src/main/java/org/signal/core/util/EnglishResourceUtil.java new file mode 100644 index 000000000..7829beefb --- /dev/null +++ b/core-util/src/main/java/org/signal/core/util/EnglishResourceUtil.java @@ -0,0 +1,29 @@ +package org.signal.core.util; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; + +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + +import java.util.Locale; + +/** + * Gives access to English strings. + */ +public final class EnglishResourceUtil { + + private EnglishResourceUtil() { + } + + public static Resources getEnglishResources(@NonNull Context context) { + Configuration configurationLocal = context.getResources().getConfiguration(); + + Configuration configurationEn = new Configuration(configurationLocal); + configurationEn.setLocale(Locale.ENGLISH); + + return context.createConfigurationContext(configurationEn) + .getResources(); + } +} diff --git a/core-util/src/main/java/org/signal/core/util/TranslationDetection.java b/core-util/src/main/java/org/signal/core/util/TranslationDetection.java index 709e6a73f..1d3920283 100644 --- a/core-util/src/main/java/org/signal/core/util/TranslationDetection.java +++ b/core-util/src/main/java/org/signal/core/util/TranslationDetection.java @@ -24,11 +24,7 @@ public final class TranslationDetection { public TranslationDetection(@NonNull Context context) { this.resourcesLocal = context.getResources(); this.configurationLocal = resourcesLocal.getConfiguration(); - - Configuration configurationEn = new Configuration(configurationLocal); - configurationEn.setLocale(Locale.ENGLISH); - - this.resourcesEn = context.createConfigurationContext(configurationEn).getResources(); + this.resourcesEn = EnglishResourceUtil.getEnglishResources(context); } /**