diff --git a/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java b/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java index bc1e665..09de074 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java +++ b/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java @@ -6,6 +6,7 @@ import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.os.IBinder; import androidx.annotation.NonNull; @@ -128,18 +129,19 @@ public class MercuryForegroundService extends Service { PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, startMainActivityIntent, 0); - String notificationText = notificationTextFrom(state); + Resources resources = context.getResources(); + String notificationText = notificationTextFrom(state, resources); return new NotificationCompat.Builder(context, Notifications.NOTIFICATION_CHANNEL__FOREGROUND_SERVICE) .setSmallIcon(R.drawable.ic_mercury_black_24dp) - .setContentTitle("Mercury-IM is running!") + .setContentTitle(resources.getString(R.string.title_foreground_service)) .setContentText(notificationText) .setStyle(new NotificationCompat.BigTextStyle().bigText(notificationText)) .setContentIntent(pendingIntent) .build(); } - private static String notificationTextFrom(ConnectionPoolState state) { + private static String notificationTextFrom(ConnectionPoolState state, Resources resources) { List connecting = new ArrayList<>(); List authenticated = new ArrayList<>(); List erred = new ArrayList<>(); @@ -163,29 +165,29 @@ public class MercuryForegroundService extends Service { StringBuilder sb = new StringBuilder(); if (!authenticated.isEmpty()) { - sb.append(authenticated.size()) - .append(authenticated.size() == 1 ? " account" : " accounts") - .append(" connected."); + sb.append(resources.getQuantityString(R.plurals.foreground_service_accounts_connected, + authenticated.size(), authenticated.size())); } if (!connecting.isEmpty()) { - if (!sb.toString().isEmpty()) { + if (!authenticated.isEmpty()) { sb.append("\n"); } - sb.append(connecting.size()) - .append(authenticated.size() == 1 ? " account" : " accounts") - .append(" connecting."); + sb.append(resources.getQuantityString(R.plurals.foreground_service_accounts_connecting, + connecting.size(), connecting.size())); } if (!erred.isEmpty()) { - if (!sb.toString().isEmpty()) { + if (!authenticated.isEmpty() || !connecting.isEmpty()) { sb.append("\n"); } Iterator iterator = erred.iterator(); + StringBuilder accounts = new StringBuilder(); while (iterator.hasNext()) { UUID id = iterator.next(); - sb.append(getAddress(state, id)); - if (iterator.hasNext()) sb.append(", "); + accounts.append(getAddress(state, id)); + if (iterator.hasNext()) accounts.append(", "); } - sb.append(erred.size() == 1 ? " has an error." : " have errors."); + sb.append(resources.getQuantityString(R.plurals.foreground_service_accounts_have_errors, + erred.size(), accounts)); } return sb.toString(); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index df2fe28..dbf43b1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,22 @@ Service that keeps the app running Notifications about incoming messages + Mercury-IM is running! + + No account connected + %d account connected + %d accounts connected + + + No account connecting + %d account connecting + %d accounts connecting + + + %s has an error + %s have errors + +