Add pluralized string (WIP 1)

This commit is contained in:
Julien Humbert 2023-08-23 09:05:04 +09:00
parent f14ebe9a0d
commit 4387412c92
11 changed files with 148 additions and 42 deletions

View File

@ -153,11 +153,41 @@ public class InstanceInfoActivity extends BaseActivity {
SiteStatistics siteStatistics = siteInfo.getSiteStatistics(); SiteStatistics siteStatistics = siteInfo.getSiteStatistics();
if (siteStatistics != null) { if (siteStatistics != null) {
mStatisticsCardView.setVisibility(View.VISIBLE); mStatisticsCardView.setVisibility(View.VISIBLE);
mUsersTextView.setText(getString(R.string.user_number_detail, siteStatistics.getUsers())); mUsersTextView.setText(
mCommunitiesTextView.setText(getString(R.string.community_number_detail, siteStatistics.getCommunities())); getResources().getQuantityString(
mPostsTextView.setText(getString(R.string.post_count_detail, siteStatistics.getPosts())); R.plurals.user_number_detail,
mCommentsTextView.setText(getString(R.string.comment_count_detail, siteStatistics.getComments())); siteStatistics.getUsers(),
mActiveUsersTextView.setText(getString(R.string.active_users_number_detail, siteStatistics.getUsers_active())); siteStatistics.getUsers()
)
);
mCommunitiesTextView.setText(
getResources().getQuantityString(
R.plurals.community_number_detail,
siteStatistics.getCommunities(),
siteStatistics.getCommunities()
)
);
mPostsTextView.setText(
getResources().getQuantityString(
R.plurals.post_count_detail,
siteStatistics.getPosts(),
siteStatistics.getPosts()
)
);
mCommentsTextView.setText(
getResources().getQuantityString(
R.plurals.comment_count_detail,
siteStatistics.getComments(),
siteStatistics.getComments()
)
);
mActiveUsersTextView.setText(
getResources().getQuantityString(
R.plurals.active_users_number_detail,
siteStatistics.getUsers_active(),
siteStatistics.getUsers_active()
)
);
} }
} }

View File

@ -596,14 +596,36 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
subredditNameTextView.setText(subredditFullName); subredditNameTextView.setText(subredditFullName);
qualifiedName = LemmyUtils.actorID2FullName(subredditData.getActorId()); qualifiedName = LemmyUtils.actorID2FullName(subredditData.getActorId());
communityFullNameTextView.setText(qualifiedName); communityFullNameTextView.setText(qualifiedName);
String nSubscribers = getString(R.string.subscribers_number_detail, subredditData.getNSubscribers()); String nSubscribers = getResources().getQuantityString(
R.plurals.subscribers_number_detail,
subredditData.getNSubscribers(),
subredditData.getNSubscribers()
);
nSubscribersTextView.setText(nSubscribers); nSubscribersTextView.setText(nSubscribers);
if (mCommunityStats != null && showStatistics) { if (mCommunityStats != null && showStatistics) {
communityStatisticsBlock.setVisibility(View.VISIBLE); communityStatisticsBlock.setVisibility(View.VISIBLE);
nActiveUsersTextView.setText(getString(R.string.active_users_number_detail, mCommunityStats.getActiveUsers())); nActiveUsersTextView.setText(
nPostsTextView.setText(getString(R.string.post_count_detail, mCommunityStats.getPosts())); getResources().getQuantityString(
nCommentsTextView.setText(getString(R.string.comment_count_detail, mCommunityStats.getComments())); R.plurals.active_users_number_detail,
mCommunityStats.getActiveUsers(),
mCommunityStats.getActiveUsers()
)
);
nPostsTextView.setText(
getResources().getQuantityString(
R.plurals.post_count_detail,
mCommunityStats.getPosts(),
mCommunityStats.getPosts()
)
);
nCommentsTextView.setText(
getResources().getQuantityString(
R.plurals.comment_count_detail,
mCommunityStats.getComments(),
mCommunityStats.getComments()
)
);
} }
description = subredditData.getDescription(); description = subredditData.getDescription();

View File

@ -53,7 +53,13 @@ public class SubredditAutocompleteRecyclerViewAdapter extends RecyclerView.Adapt
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
.into(((SubredditViewHolder) holder).iconImageView); .into(((SubredditViewHolder) holder).iconImageView);
((SubredditViewHolder) holder).subredditNameTextView.setText(subreddits.get(position).getName()); ((SubredditViewHolder) holder).subredditNameTextView.setText(subreddits.get(position).getName());
((SubredditViewHolder) holder).subscriberCountTextView.setText(activity.getString(R.string.subscribers_number_detail, subreddits.get(position).getNSubscribers())); ((SubredditViewHolder) holder).subscriberCountTextView.setText(
activity.getResources().getQuantityString(
R.plurals.subscribers_number_detail,
subreddits.get(position).getNSubscribers(),
subreddits.get(position).getNSubscribers()
)
);
} }
} }

View File

@ -142,7 +142,13 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
} }
((DataViewHolder) holder).subredditNameTextView.setText(subredditData.getName()); ((DataViewHolder) holder).subredditNameTextView.setText(subredditData.getName());
((DataViewHolder) holder).subscriberCountTextView.setText(activity.getString(R.string.subscribers_number_detail, subredditData.getNSubscribers())); ((DataViewHolder) holder).subscriberCountTextView.setText(
activity.getResources().getQuantityString(
R.plurals.subscribers_number_detail,
subredditData.getNSubscribers(),
subredditData.getNSubscribers()
)
);
if (!isMultiSelection) { if (!isMultiSelection) {
CheckIsSubscribedToSubreddit.checkIsSubscribedToSubreddit(executor, new Handler(), CheckIsSubscribedToSubreddit.checkIsSubscribedToSubreddit(executor, new Handler(),

View File

@ -264,10 +264,34 @@ public class SidebarFragment extends Fragment {
if (mCommunityStats != null) { if (mCommunityStats != null) {
communityStatisticsBlock.setVisibility(View.VISIBLE); communityStatisticsBlock.setVisibility(View.VISIBLE);
nSubscribersTextView.setText(getString(R.string.subscribers_number_detail, mCommunityStats.getSubscribers())); nSubscribersTextView.setText(
nActiveUsersTextView.setText(getString(R.string.active_users_number_detail, mCommunityStats.getActiveUsers())); getResources().getQuantityString(
nPostsTextView.setText(getString(R.string.post_count_detail, mCommunityStats.getPosts())); R.plurals.subscribers_number_detail,
nCommentsTextView.setText(getString(R.string.comment_count_detail, mCommunityStats.getComments())); mCommunityStats.getSubscribers(),
mCommunityStats.getSubscribers()
)
);
nActiveUsersTextView.setText(
getResources().getQuantityString(
R.plurals.active_users_number_detail,
mCommunityStats.getActiveUsers(),
mCommunityStats.getActiveUsers()
)
);
nPostsTextView.setText(
getResources().getQuantityString(
R.plurals.post_count_detail,
mCommunityStats.getPosts(),
mCommunityStats.getPosts()
)
);
nCommentsTextView.setText(
getResources().getQuantityString(
R.plurals.comment_count_detail,
mCommunityStats.getComments(),
mCommunityStats.getComments()
)
);
} else { } else {
fetchSubredditData(); fetchSubredditData();
} }

View File

@ -99,7 +99,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/subscribers_number_detail" android:text="@plurals/subscribers_number_detail"
app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -126,7 +126,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail" android:text="@plurals/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -146,7 +146,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/post_count_detail" android:text="@plurals/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" />
@ -166,7 +166,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/comment_count_detail" android:text="@plurals/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" />

View File

@ -99,7 +99,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/subscribers_number_detail" android:text="@plurals/subscribers_number_detail"
app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -126,7 +126,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail" android:text="@plurals/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -146,7 +146,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/post_count_detail" android:text="@plurals/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" />
@ -166,7 +166,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/comment_count_detail" android:text="@plurals/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" />

View File

@ -121,7 +121,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/user_number_detail" android:text="@plurals/user_number_detail"
app:layout_constraintStart_toEndOf="@+id/registered_user_count_image_view_instance_info_activity" app:layout_constraintStart_toEndOf="@+id/registered_user_count_image_view_instance_info_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -148,7 +148,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail" android:text="@plurals/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_instance_info_activity" app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_instance_info_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -168,7 +168,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/post_count_detail" android:text="@plurals/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_instance_info_activity" app:layout_constraintStart_toEndOf="@+id/post_count_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/registered_user_count_image_view_instance_info_activity" /> app:layout_constraintTop_toBottomOf="@+id/registered_user_count_image_view_instance_info_activity" />
@ -188,7 +188,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/comment_count_detail" android:text="@plurals/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_instance_info_activity" app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_instance_info_activity" /> app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_instance_info_activity" />
@ -208,7 +208,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/community_number_detail" android:text="@plurals/community_number_detail"
app:layout_constraintStart_toEndOf="@+id/communities_icon_image_view_instance_info_activity" app:layout_constraintStart_toEndOf="@+id/communities_icon_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/post_count_image_view_instance_info_activity" /> app:layout_constraintTop_toBottomOf="@+id/post_count_image_view_instance_info_activity" />

View File

@ -98,7 +98,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/subscribers_number_detail" android:text="@plurals/subscribers_number_detail"
app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -125,7 +125,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail" android:text="@plurals/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -145,7 +145,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/post_count_detail" android:text="@plurals/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/post_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_view_subreddit_detail_activity" />
@ -165,7 +165,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/comment_count_detail" android:text="@plurals/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity" app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_view_subreddit_detail_activity"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" /> app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_view_subreddit_detail_activity" />

View File

@ -110,7 +110,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/subscribers_number_detail" android:text="@plurals/subscribers_number_detail"
app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_sidebar_fragment" app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_sidebar_fragment"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -137,7 +137,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail" android:text="@plurals/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_sidebar_fragment" app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_sidebar_fragment"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -157,7 +157,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/post_count_detail" android:text="@plurals/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_sidebar_fragment" app:layout_constraintStart_toEndOf="@+id/post_count_image_view_sidebar_fragment"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_sidebar_fragment" /> app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_sidebar_fragment" />
@ -177,7 +177,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="18dp" android:layout_marginTop="18dp"
android:text="@string/comment_count_detail" android:text="@plurals/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_sidebar_fragment" app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_sidebar_fragment"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_sidebar_fragment" /> app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_sidebar_fragment" />

View File

@ -146,12 +146,30 @@
<string name="saved">Saved</string> <string name="saved">Saved</string>
<string name="gilded">Gilded</string> <string name="gilded">Gilded</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="subscribers_number_detail">%1$,d Subscribers</string> <plurals name="subscribers_number_detail">
<string name="active_users_number_detail">%1$,d Active Users</string> <item quantity="one">%1$,d Subscriber</item>
<string name="post_count_detail">%1$,d Posts</string> <item quantity="other">%1$,d Subscribers</item>
<string name="comment_count_detail">%1$,d Comments</string> </plurals>
<string name="user_number_detail">%1$,d Users</string> <plurals name="active_users_number_detail">
<string name="community_number_detail">%1$,d Communities</string> <item quantity="one">%1$,d Active User</item>
<item quantity="other">%1$,d Active Users</item>
</plurals>
<plurals name="post_count_detail">
<item quantity="one">%1$,d Post</item>
<item quantity="other">%1$,d Posts</item>
</plurals>
<plurals name="comment_count_detail">
<item quantity="one">%1$,d Comment</item>
<item quantity="other">%1$,d Comments</item>
</plurals>
<plurals name="user_number_detail">
<item quantity="one">%1$,d User</item>
<item quantity="other">%1$,d Users</item>
</plurals>
<plurals name="community_number_detail">
<item quantity="one">%1$,d Community</item>
<item quantity="other">%1$,d Communities</item>
</plurals>
<string name="online_subscribers_number_detail">Online: %1$,d</string> <string name="online_subscribers_number_detail">Online: %1$,d</string>
<string name="cannot_fetch_community_info">Cannot fetch community info</string> <string name="cannot_fetch_community_info">Cannot fetch community info</string>
<string name="cannot_fetch_user_info">Cannot fetch user info</string> <string name="cannot_fetch_user_info">Cannot fetch user info</string>