properly handle <plurals>
<plurals> 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). <plurals> 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 <strings> !472
This commit is contained in:
parent
77e3d6a6f1
commit
cfabd2a2c3
@ -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);
|
||||
|
@ -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.
|
||||
* <li> Display name + summary of the app (most common).
|
||||
* <li> If downloading, mention that it is downloading instead of showing the summary.
|
||||
* <li> 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);
|
||||
|
@ -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<Cursor> {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -415,7 +415,7 @@ corréu colos detalles p\'ayudar a iguar esti problema?</string>
|
||||
<item quantity="one">Baxar anovamientu pa %1$d aplicación.</item>
|
||||
<item quantity="other">Baxar anovamientos pa %1$d aplicaciones.</item>
|
||||
</plurals>
|
||||
|
||||
<string name="details_last_updated_today">Anovóse güei</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Anovóse güei</item>
|
||||
<item quantity="other">Anovóse hai %1$s día</item>
|
||||
|
@ -434,6 +434,7 @@ https://developer.android.com/guide/topics/resources/string-resource.html#Plural
|
||||
<string name="app_list__name__downloaded_and_ready_to_update">Actualitzeu %1$s</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_install">Instal·leu %1$s</string>
|
||||
<string name="app_list__name__downloading_in_progress">Descarregant %1$s</string>
|
||||
<string name="app_list__age__released_yesterday">Publicat ahir</string>
|
||||
<plurals name="app_list__age__released_x_days_ago">
|
||||
<item quantity="one">Publicat ahir</item>
|
||||
<item quantity="other">Publicat fa %1$s dies</item>
|
||||
@ -454,6 +455,7 @@ https://developer.android.com/guide/topics/resources/string-resource.html#Plural
|
||||
<string name="details_new_in_version">Novetats a la versió %s</string>
|
||||
|
||||
<string name="antifeatureswarning">Aquesta app conté característiques que potser no us agradarien.</string>
|
||||
<string name="details_last_updated_today">Actualitzades avui</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Actualitzades avui</item>
|
||||
<item quantity="other">Actualitzades fa %1$s dies</item>
|
||||
|
@ -442,6 +442,7 @@ Bitte eine andere Kategorie wählen oder die Paketquellen aktualisieren.</string
|
||||
|
||||
<string name="antifeatureswarning">Diese Anwendung hat Merkmale, die Ihnen nicht gefallen könnten.</string>
|
||||
<string name="antifeatures">Unfreie Merkmale</string>
|
||||
<string name="details_last_updated_today">Heute aktualisiert</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Heute aktualisiert</item>
|
||||
<item quantity="other">Vor %1$d Tagen aktualisiert</item>
|
||||
|
@ -448,6 +448,7 @@ Provu elekti alian kategorion aŭ ĝisdatigi viajn deponejojn por atingi freŝan
|
||||
|
||||
<string name="antifeatureswarning">Ĉi tiu aplikaĵo enhavas eblojn, kiujn vi eble ne ŝatas.</string>
|
||||
<string name="antifeatures">Fiebloj</string>
|
||||
<string name="details_last_updated_today">Ĝisdatigita hodiaŭ</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Ĝisdatigita hodiaŭ</item>
|
||||
<item quantity="other">Ĝisdatigita antaŭ %1$s tagoj</item>
|
||||
|
@ -433,6 +433,8 @@ detalles para ayudarnos a arreglar el problema?</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_update">Actualizar %1$s</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_install">Instalar %1$s</string>
|
||||
<string name="app_list__name__downloading_in_progress">Descargando %1$s</string>
|
||||
<string name="app_list__age__released_today">publicada hoy</string>
|
||||
<string name="app_list__age__released_yesterday">publicada ayer</string>
|
||||
<plurals name="app_list__age__released_x_days_ago">
|
||||
<item quantity="one">publicada ayer</item>
|
||||
<item quantity="other">publicada hace %1$d días</item>
|
||||
@ -454,6 +456,7 @@ detalles para ayudarnos a arreglar el problema?</string>
|
||||
|
||||
<string name="antifeatureswarning">Est app contiene características que podrían no gustarte.</string>
|
||||
<string name="antifeatures">Características no-libres</string>
|
||||
<string name="details_last_updated_today">Actualizada hoy</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Actualizada hoy</item>
|
||||
<item quantity="other">Actualizadas hace %1$s días</item>
|
||||
|
@ -461,7 +461,7 @@ konpontzen laguntzeko?</string>
|
||||
<item quantity="one">" 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 "</item>
|
||||
<item quantity="other">" Ikusi guztiak %d "</item>
|
||||
</plurals>
|
||||
|
||||
<string name="details_last_updated_today">Gaur eguneratua</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Gaur eguneratua</item>
|
||||
<item quantity="other">Orain dela %1$s egun eguneratua</item>
|
||||
|
@ -449,6 +449,7 @@
|
||||
<item quantity="one">今日更新</item>
|
||||
<item quantity="other"/>
|
||||
</plurals>
|
||||
<string name="details_last_updated_today">今日更新</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s を正常にインストールしました</string>
|
||||
<string name="nearby_splash__download_apps_from_people_nearby">インターネットがありませんか? 近くの人からアプリをダウンロードしてください!</string>
|
||||
<string name="nearby_splash__find_people_button">近くの人を見つける</string>
|
||||
|
@ -422,6 +422,7 @@ i en e-post for å fikse problemet?</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_update">Oppdater %1$s</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_install">Installer %1$s</string>
|
||||
<string name="app_list__name__downloading_in_progress">Henter %1$s</string>
|
||||
<string name="app_list__age__released_yesterday">Utgitt i går</string>
|
||||
<plurals name="app_list__age__released_x_days_ago">
|
||||
<item quantity="one">Utgitt i går</item>
|
||||
<item quantity="other">Utgitt for %1$d dager siden</item>
|
||||
@ -446,6 +447,7 @@ i en e-post for å fikse problemet?</string>
|
||||
<item quantity="one">" Vis alle %d "</item>
|
||||
<item quantity="other">" Vis alle %d "</item>
|
||||
</plurals>
|
||||
<string name="details_last_updated_today">Oppdatert i dag</string>
|
||||
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Oppdatert i dag</item>
|
||||
|
@ -447,6 +447,7 @@ Uwaga: Wszystkie poprzednio zainstalowane aplikacje zostaną na urządzeniu.</st
|
||||
|
||||
<string name="antifeatureswarning">Ta aplikacja zawiera funkcje, których możesz nie lubić.</string>
|
||||
<string name="antifeatures">Niepożądane funkcje</string>
|
||||
<string name="details_last_updated_today">Uaktualniono dzisiaj</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Uaktualniono dzisiaj</item>
|
||||
<item quantity="few">Uaktualniono %1$s dni temu</item>
|
||||
|
@ -463,6 +463,7 @@ com os detalhes para ajudar a corrigir o problema?</string>
|
||||
<string name="nearby_splash__find_people_button">Encontrar pessoas perto de mim</string>
|
||||
<string name="nearby_splash__both_parties_need_fdroid">Ambas as partes precisam de %1$s para usar perto.</string>
|
||||
|
||||
<string name="details_last_updated_today">Atualizado hoje</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Atualizados %1$s dias atrás</item>
|
||||
<item quantity="other">Atualizados %1$s dias atrás</item>
|
||||
|
@ -466,6 +466,7 @@ Gostaria de nos enviar um e-mail com os detalhes do erro?</string>
|
||||
|
||||
<string name="tts_category_name">Categoria %1$s</string>
|
||||
|
||||
<string name="details_last_updated_today">Atualizado hoje</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Atualizada há %1$s dia</item>
|
||||
<item quantity="other">Atualizada há %1$s dias</item>
|
||||
|
@ -388,6 +388,7 @@ Nota: Toate
|
||||
<item quantity="few">Vezi toate cele %1$d aplicații din categoria %2$s</item>
|
||||
<item quantity="other">Vezi toate cele %1$d de aplicații din categoria %2$s</item>
|
||||
</plurals>
|
||||
<string name="details_last_updated_today">Actualizate azi</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Actualizate azi</item>
|
||||
<item quantity="few">Actualizate acum %1$s zile</item>
|
||||
|
@ -410,6 +410,7 @@
|
||||
<string name="notification_title_summary_downloading">Загрузка…</string>
|
||||
<string name="notification_title_summary_downloading_update">Загрузка обновления…</string>
|
||||
<string name="notification_action_update">Обновить</string>
|
||||
<string name="details_last_updated_today">Обновлено сегодня</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Обновлено %1$s дня назад</item>
|
||||
<item quantity="few">Обновлено %1$s дня назад</item>
|
||||
|
@ -454,6 +454,7 @@ Depes
|
||||
|
||||
<string name="antifeatureswarning">Custa aplicatzione tenet funtzionalidades chi ti diant pòdere non agradare.</string>
|
||||
<string name="antifeatures">Anti-funtzionalidades</string>
|
||||
<string name="details_last_updated_today">Agiornadu oe</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Agiornadu oe</item>
|
||||
<item quantity="other">Agiornadu %1$s dies faghet</item>
|
||||
|
@ -402,6 +402,7 @@ a pomôť tak vyriešiť problém?</string>
|
||||
<string name="app_list__name__downloaded_and_ready_to_install">Inštalovať %1$s</string>
|
||||
<string name="app_list__name__downloading_in_progress">Sťahovanie %1$s</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s úspešne nainštalovaná</string>
|
||||
<string name="app_list__age__released_yesterday">Vydané pred dňom</string>
|
||||
<plurals name="app_list__age__released_x_days_ago">
|
||||
<item quantity="one">Vydané pred dňom</item>
|
||||
<item quantity="few">Vydané pred %1$d dňami</item>
|
||||
|
@ -72,6 +72,8 @@
|
||||
<string name="app_list__name__downloaded_and_ready_to_install">Install %1$s</string>
|
||||
<string name="app_list__name__downloading_in_progress">Downloading %1$s</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s successfully installed</string>
|
||||
<string name="app_list__age__released_today">Released today</string>
|
||||
<string name="app_list__age__released_yesterday">Released yesterday</string>
|
||||
<plurals name="app_list__age__released_x_days_ago">
|
||||
<item quantity="one">Released %1$d day ago</item>
|
||||
<item quantity="other">Released %1$d days ago</item>
|
||||
@ -473,12 +475,12 @@
|
||||
<string name="tts_category_name">Category %1$s</string>
|
||||
|
||||
<plurals name="tts_view_all_in_category">
|
||||
<item quantity="one">View the single one app in the %2$s category</item>
|
||||
<item quantity="one">View %1$d app in the %2$s category</item>
|
||||
<item quantity="other">View all %1$d apps from the %2$s category</item>
|
||||
</plurals>
|
||||
|
||||
<string name="details_last_updated_today">Updated today</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="zero">Updated today</item>
|
||||
<item quantity="one">Updated %1$s day ago</item>
|
||||
<item quantity="other">Updated %1$s days ago</item>
|
||||
</plurals>
|
||||
|
Loading…
x
Reference in New Issue
Block a user