From cfabd2a2c37b94f343e349e5a25b7d91385e52f7 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 18 Apr 2017 17:17:05 +0200 Subject: [PATCH] properly handle handles the grammar needed for numbers/quantities in various languages. Like in a number of slavic languages, numbers ending in 0, 1 or others have separate grammar. In English, there is just 1 and then all the rest (0 days, 2 days, 3 days, etc). does not handle multiple strings for different quantities, like having a different string for each number case. For that, we have to do it in Java and have multiple !472 --- .../views/AppDetailsRecyclerViewAdapter.java | 10 +++++++++- .../views/apps/AppListItemController.java | 20 +++++++++++++------ .../fdroid/views/main/WhatsNewViewBinder.java | 11 ++++++++-- app/src/main/res/values-ast/strings.xml | 2 +- app/src/main/res/values-ca/strings.xml | 2 ++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-eo/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 3 +++ app/src/main/res/values-eu/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-nb/strings.xml | 2 ++ app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-pt-rPT/strings.xml | 1 + app/src/main/res/values-ro/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sc/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values/strings.xml | 6 ++++-- 19 files changed, 55 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index d09b78e60..5b0eed6bc 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.graphics.Bitmap; import android.net.Uri; import android.support.annotation.DrawableRes; @@ -404,7 +405,14 @@ public class AppDetailsRecyclerViewAdapter } if (app.lastUpdated != null) { int daysSince = Utils.daysSince(app.lastUpdated); - lastUpdateView.setText(lastUpdateView.getContext().getResources().getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince)); + String text; + Resources resources = lastUpdateView.getContext().getResources(); + if (daysSince < 1) { + text = resources.getString(R.string.details_last_updated_today); + } else { + text = resources.getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince); + } + lastUpdateView.setText(text); lastUpdateView.setVisibility(View.VISIBLE); } else { lastUpdateView.setVisibility(View.GONE); diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java index cad2498ce..ae20dffa3 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java @@ -7,6 +7,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources; import android.graphics.Outline; import android.net.Uri; import android.os.Build; @@ -26,10 +27,8 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; - import org.fdroid.fdroid.AppDetails2; import org.fdroid.fdroid.AppUpdateStatusManager; import org.fdroid.fdroid.R; @@ -273,9 +272,9 @@ public class AppListItemController extends RecyclerView.ViewHolder { /** * The app name {@link TextView} is used for a few reasons: - * * Display name + summary of the app (most common). - * * If downloading, mention that it is downloading instead of showing the summary. - * * If downloaded and ready to install, mention that it is ready to update/install. + *
  • Display name + summary of the app (most common). + *
  • If downloading, mention that it is downloading instead of showing the summary. + *
  • If downloaded and ready to install, mention that it is ready to update/install. */ private void configureAppName(@NonNull App app) { if (isReadyToInstall(app)) { @@ -284,7 +283,16 @@ public class AppListItemController extends RecyclerView.ViewHolder { if (app.lastUpdated != null) { long ageInMillis = System.currentTimeMillis() - app.lastUpdated.getTime(); int ageInDays = (int) (ageInMillis / 1000 / 60 / 60 / 24); - String age = activity.getResources().getQuantityString(R.plurals.app_list__age__released_x_days_ago, ageInDays, ageInDays); + Resources resources = activity.getResources(); + String age; + if (ageInDays == 0) { + age = resources.getString(R.string.app_list__age__released_today); + } else if (ageInDays == 1) { + age = resources.getString(R.string.app_list__age__released_yesterday); + } else { + age = resources.getQuantityString(R.plurals.app_list__age__released_x_days_ago, + ageInDays, ageInDays); + } name.setText(appName + "\n" + age); } else { name.setText(appName); diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java index 8d0ed9bd2..e73626468 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java @@ -1,6 +1,7 @@ package org.fdroid.fdroid.views.main; import android.content.Intent; +import android.content.res.Resources; import android.database.Cursor; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -14,7 +15,6 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; @@ -123,7 +123,14 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks { emptyStateText.append(activity.getString(R.string.latest__empty_state__never_updated)); } else { int daysSince = Utils.daysSince(lastUpdate); - emptyStateText.append(activity.getResources().getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince)); + Resources resources = activity.getResources(); + String text; + if (daysSince < 1) { + text = resources.getString(R.string.details_last_updated_today); + } else { + text = resources.getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince); + } + emptyStateText.append(text); } } diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml index dd99556c7..0ea3a5cbd 100644 --- a/app/src/main/res/values-ast/strings.xml +++ b/app/src/main/res/values-ast/strings.xml @@ -415,7 +415,7 @@ corréu colos detalles p\'ayudar a iguar esti problema? Baxar anovamientu pa %1$d aplicación. Baxar anovamientos pa %1$d aplicaciones. - + Anovóse güei Anovóse güei Anovóse hai %1$s día diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 4e99d7f1f..6283d023c 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -434,6 +434,7 @@ https://developer.android.com/guide/topics/resources/string-resource.html#Plural Actualitzeu %1$s Instal·leu %1$s Descarregant %1$s + Publicat ahir Publicat ahir Publicat fa %1$s dies @@ -454,6 +455,7 @@ https://developer.android.com/guide/topics/resources/string-resource.html#Plural Novetats a la versió %s Aquesta app conté característiques que potser no us agradarien. + Actualitzades avui Actualitzades avui Actualitzades fa %1$s dies diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 458028c8e..bf33ee5b0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -442,6 +442,7 @@ Bitte eine andere Kategorie wählen oder die Paketquellen aktualisieren.Diese Anwendung hat Merkmale, die Ihnen nicht gefallen könnten. Unfreie Merkmale + Heute aktualisiert Heute aktualisiert Vor %1$d Tagen aktualisiert diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 1bca1c4bb..10e648e64 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -448,6 +448,7 @@ Provu elekti alian kategorion aŭ ĝisdatigi viajn deponejojn por atingi freŝan Ĉi tiu aplikaĵo enhavas eblojn, kiujn vi eble ne ŝatas. Fiebloj + Ĝisdatigita hodiaŭ Ĝisdatigita hodiaŭ Ĝisdatigita antaŭ %1$s tagoj diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 6fce68193..e4f1827a2 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -433,6 +433,8 @@ detalles para ayudarnos a arreglar el problema? Actualizar %1$s Instalar %1$s Descargando %1$s + publicada hoy + publicada ayer publicada ayer publicada hace %1$d días @@ -454,6 +456,7 @@ detalles para ayudarnos a arreglar el problema? Est app contiene características que podrían no gustarte. Características no-libres + Actualizada hoy Actualizada hoy Actualizadas hace %1$s días diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index ab2c4781f..86ffae885 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -461,7 +461,7 @@ konpontzen laguntzeko? " Bi hauek berdina badira ere, Androiden dokumentazioak gutxienez bata zein bestea zehaztea aholkatzen du: https://developer.android.com/guide/topics/resources/string-resource.html#Plurals " " Ikusi guztiak %d " - + Gaur eguneratua Gaur eguneratua Orain dela %1$s egun eguneratua diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 76423a0f4..b637b8fec 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -449,6 +449,7 @@ 今日更新 + 今日更新 %1$s を正常にインストールしました インターネットがありませんか? 近くの人からアプリをダウンロードしてください! 近くの人を見つける diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 3ee6128c8..292a08864 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -422,6 +422,7 @@ i en e-post for å fikse problemet? Oppdater %1$s Installer %1$s Henter %1$s + Utgitt i går Utgitt i går Utgitt for %1$d dager siden @@ -446,6 +447,7 @@ i en e-post for å fikse problemet? " Vis alle %d " " Vis alle %d " + Oppdatert i dag Oppdatert i dag diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 9b667e18e..def1d4648 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -447,6 +447,7 @@ Uwaga: Wszystkie poprzednio zainstalowane aplikacje zostaną na urządzeniu.Ta aplikacja zawiera funkcje, których możesz nie lubić. Niepożądane funkcje + Uaktualniono dzisiaj Uaktualniono dzisiaj Uaktualniono %1$s dni temu diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e273c6a14..db435a7f0 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -463,6 +463,7 @@ com os detalhes para ajudar a corrigir o problema? Encontrar pessoas perto de mim Ambas as partes precisam de %1$s para usar perto. + Atualizado hoje Atualizados %1$s dias atrás Atualizados %1$s dias atrás diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 9457e0be5..50e4ed1ce 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -466,6 +466,7 @@ Gostaria de nos enviar um e-mail com os detalhes do erro? Categoria %1$s + Atualizado hoje Atualizada há %1$s dia Atualizada há %1$s dias diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 9daa62ad1..2647caca4 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -388,6 +388,7 @@ Nota: Toate Vezi toate cele %1$d aplicații din categoria %2$s Vezi toate cele %1$d de aplicații din categoria %2$s + Actualizate azi Actualizate azi Actualizate acum %1$s zile diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 82c5f680b..a94ed3f18 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -410,6 +410,7 @@ Загрузка… Загрузка обновления… Обновить + Обновлено сегодня Обновлено %1$s дня назад Обновлено %1$s дня назад diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index a192ce1b6..53cb211a0 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -454,6 +454,7 @@ Depes Custa aplicatzione tenet funtzionalidades chi ti diant pòdere non agradare. Anti-funtzionalidades + Agiornadu oe Agiornadu oe Agiornadu %1$s dies faghet diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index b69bada5d..968146990 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -402,6 +402,7 @@ a pomôť tak vyriešiť problém? Inštalovať %1$s Sťahovanie %1$s %1$s úspešne nainštalovaná + Vydané pred dňom Vydané pred dňom Vydané pred %1$d dňami diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f659f4a82..12a5e6378 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,6 +72,8 @@ Install %1$s Downloading %1$s %1$s successfully installed + Released today + Released yesterday Released %1$d day ago Released %1$d days ago @@ -473,12 +475,12 @@ Category %1$s - View the single one app in the %2$s category + View %1$d app in the %2$s category View all %1$d apps from the %2$s category + Updated today - Updated today Updated %1$s day ago Updated %1$s days ago