From 5c5b88ebccf827a4680c18c11abc1c9c608eef87 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 16 May 2023 10:15:24 -0400 Subject: [PATCH] Pluralize some strings. --- .../CameraContactSelectionFragment.java | 2 +- .../notifications/v2/NotificationFactory.kt | 8 ++++++- .../StoragePreferenceFragment.java | 2 +- app/src/main/res/values/strings.xml | 24 ++++++++++++++++--- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java index e593b5a3d2..dc9d8d6ffb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java @@ -179,7 +179,7 @@ public class CameraContactSelectionFragment extends LoggingFragment implements C if (error == null) return; if (error == CameraContactSelectionViewModel.Error.MAX_SELECTION) { - String message = getString(R.string.CameraContacts_you_can_share_with_a_maximum_of_n_conversations, CameraContactSelectionViewModel.MAX_SELECTION_COUNT); + String message = getResources().getQuantityString(R.plurals.CameraContacts_you_can_share_with_a_maximum_of_n_conversations, CameraContactSelectionViewModel.MAX_SELECTION_COUNT, CameraContactSelectionViewModel.MAX_SELECTION_COUNT); Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show(); } }); diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt index f147f1a09a..eda2ecb098 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt @@ -281,7 +281,7 @@ object NotificationFactory { setContentTitle(context.getString(R.string.app_name)) setContentIntent(NotificationPendingIntentHelper.getActivity(context, 0, MainActivity.clearTop(context), PendingIntentFlags.mutable())) setGroupSummary(true) - setSubText(context.getString(R.string.MessageNotifier_d_new_messages_in_d_conversations, state.messageCount, state.threadCount)) + setSubText(context.buildSummaryString(state.messageCount, state.threadCount)) setContentInfo(state.messageCount.toString()) setNumber(state.messageCount) setSummaryContentText(state.mostRecentSender) @@ -300,6 +300,12 @@ object NotificationFactory { NotificationManagerCompat.from(context).safelyNotify(null, NotificationIds.MESSAGE_SUMMARY, builder.build()) } + private fun Context.buildSummaryString(messageCount: Int, threadCount: Int): String { + val messageString = resources.getQuantityString(R.plurals.MessageNotifier_d_messages, messageCount, messageCount) + val threadString = resources.getQuantityString(R.plurals.MessageNotifier_d_chats, threadCount, threadCount) + return getString(R.string.MessageNotifier_s_in_s, messageString, threadString) + } + private fun notifyInThread(context: Context, recipient: Recipient, lastAudibleNotification: Long) { if (!SignalStore.settings().isMessageNotificationsInChatSoundsEnabled || ServiceUtil.getAudioManager(context).ringerMode != AudioManager.RINGER_MODE_NORMAL || diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/StoragePreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/StoragePreferenceFragment.java index 03ff822a6c..1571571b2e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/StoragePreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/StoragePreferenceFragment.java @@ -276,7 +276,7 @@ public class StoragePreferenceFragment extends ListSummaryPreferenceFragment { if (newTrimLength > 0 && (!trimLengthEnabled || newTrimLength < trimLength)) { new MaterialAlertDialogBuilder(activity) .setTitle(R.string.preferences_storage__delete_older_messages) - .setMessage(activity.getString(R.string.preferences_storage__this_will_permanently_trim_all_conversations_to_the_d_most_recent_messages, NumberFormat.getInstance().format(newTrimLength))) + .setMessage(activity.getResources().getQuantityString(R.plurals.preferences_storage__this_will_permanently_trim_all_conversations_to_the_d_most_recent_messages, newTrimLength, newTrimLength)) .setPositiveButton(R.string.delete, (d, w) -> updateTrimByLength(newTrimLength)) .setNegativeButton(android.R.string.cancel, null) .show(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5ceabd6bca..3ba47df370 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -183,7 +183,11 @@ Recent contacts Signal contacts Signal groups - You can share with a maximum of %d chats. + + + You can share with a maximum of %d chat. + You can share with a maximum of %d chats. + Select Signal recipients No Signal contacts You can only use the camera button to send photos to Signal contacts. @@ -2159,7 +2163,18 @@ Read More - + + %1$s in %2$s + + + %1$d message + %1$d messages + + + + %1$d chats + %1$d chats + %1$d new messages in %2$d chats Most recent from: %1$s Locked message @@ -2905,7 +2920,10 @@ Clear message history? This will permanently delete all message history and media from your device that are older than %1$s. - This will permanently trim all chats to the %1$s most recent messages. + + This will permanently trim all chats to the most recent message. + This will permanently trim all chats to the %1$s most recent messages. + This will permanently delete all message history and media from your device. Are you sure you want to delete all message history? All message history will be permanently removed. This action cannot be undone.