Skip to content

Commit 2a99cfe

Browse files
Use Core I18n to format plurals
1 parent 22a709d commit 2a99cfe

105 files changed

Lines changed: 175 additions & 2492 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ dependencies {
229229
implementation 'androidx.cardview:cardview:1.0.0'
230230
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
231231
implementation 'androidx.core:core-ktx:1.12.0'
232+
implementation 'androidx.core:core-i18n:1.0.0'
232233
implementation 'androidx.documentfile:documentfile:1.0.1'
233234
implementation 'androidx.fragment:fragment-ktx:1.6.2'
234235
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}"

app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.schabi.newpipe.util.Localization;
2121

2222
import java.util.List;
23+
import java.util.Optional;
2324

2425
public class DescriptionFragment extends BaseDescriptionFragment {
2526

@@ -67,9 +68,12 @@ public List<String> getTags() {
6768
@Override
6869
protected void setupMetadata(final LayoutInflater inflater,
6970
final LinearLayout layout) {
70-
if (streamInfo != null && streamInfo.getUploadDate() != null) {
71-
binding.detailUploadDateView.setText(Localization
72-
.localizeUploadDate(activity, streamInfo.getUploadDate().offsetDateTime()));
71+
final var date = Optional.ofNullable(streamInfo)
72+
.map(StreamInfo::getUploadDate)
73+
.map(wrapper -> Localization.formatDate(wrapper.offsetDateTime()))
74+
.orElse(null);
75+
if (date != null) {
76+
binding.detailUploadDateView.setText(date);
7377
} else {
7478
binding.detailUploadDateView.setVisibility(View.GONE);
7579
}

app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1509,14 +1509,14 @@ public void handleResult(@NonNull final StreamInfo info) {
15091509

15101510
if (info.getViewCount() >= 0) {
15111511
if (info.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
1512-
binding.detailViewCountView.setText(Localization.listeningCount(activity,
1512+
binding.detailViewCountView.setText(Localization.formatListeningCount(activity,
15131513
info.getViewCount()));
15141514
} else if (info.getStreamType().equals(StreamType.LIVE_STREAM)) {
15151515
binding.detailViewCountView.setText(Localization
1516-
.localizeWatchingCount(activity, info.getViewCount()));
1516+
.formatWatchingCount(activity, info.getViewCount()));
15171517
} else {
15181518
binding.detailViewCountView.setText(Localization
1519-
.localizeViewCount(activity, info.getViewCount()));
1519+
.formatViewCount(activity, info.getViewCount()));
15201520
}
15211521
binding.detailViewCountView.setVisibility(View.VISIBLE);
15221522
} else {
@@ -1533,7 +1533,7 @@ public void handleResult(@NonNull final StreamInfo info) {
15331533
} else {
15341534
if (info.getDislikeCount() >= 0) {
15351535
binding.detailThumbsDownCountView.setText(Localization
1536-
.shortCount(activity, info.getDislikeCount()));
1536+
.getShortCount(activity, info.getDislikeCount()));
15371537
binding.detailThumbsDownCountView.setVisibility(View.VISIBLE);
15381538
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
15391539
} else {
@@ -1542,7 +1542,7 @@ public void handleResult(@NonNull final StreamInfo info) {
15421542
}
15431543

15441544
if (info.getLikeCount() >= 0) {
1545-
binding.detailThumbsUpCountView.setText(Localization.shortCount(activity,
1545+
binding.detailThumbsUpCountView.setText(Localization.getShortCount(activity,
15461546
info.getLikeCount()));
15471547
binding.detailThumbsUpCountView.setVisibility(View.VISIBLE);
15481548
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
@@ -1617,8 +1617,8 @@ private void displayUploaderAsSubChannel(final StreamInfo info) {
16171617
binding.detailSubChannelTextView.setSelected(true);
16181618

16191619
if (info.getUploaderSubscriberCount() > -1) {
1620-
binding.detailUploaderTextView.setText(
1621-
Localization.shortSubscriberCount(activity, info.getUploaderSubscriberCount()));
1620+
binding.detailUploaderTextView.setText(Localization.formatSubscriberCount(activity,
1621+
info.getUploaderSubscriberCount()));
16221622
binding.detailUploaderTextView.setVisibility(View.VISIBLE);
16231623
} else {
16241624
binding.detailUploaderTextView.setVisibility(View.GONE);
@@ -1637,18 +1637,17 @@ private void displayBothUploaderAndSubChannel(final StreamInfo info) {
16371637

16381638
final StringBuilder subText = new StringBuilder();
16391639
if (!isEmpty(info.getUploaderName())) {
1640-
subText.append(
1641-
String.format(getString(R.string.video_detail_by), info.getUploaderName()));
1640+
subText.append(getString(R.string.video_detail_by, info.getUploaderName()));
16421641
}
16431642
if (info.getUploaderSubscriberCount() > -1) {
1644-
if (subText.length() > 0) {
1643+
if (!isEmpty(subText)) {
16451644
subText.append(Localization.DOT_SEPARATOR);
16461645
}
1647-
subText.append(
1648-
Localization.shortSubscriberCount(activity, info.getUploaderSubscriberCount()));
1646+
subText.append(Localization.formatSubscriberCount(activity,
1647+
info.getUploaderSubscriberCount()));
16491648
}
16501649

1651-
if (subText.length() > 0) {
1650+
if (!isEmpty(subText)) {
16521651
binding.detailUploaderTextView.setText(subText);
16531652
binding.detailUploaderTextView.setVisibility(View.VISIBLE);
16541653
binding.detailUploaderTextView.setSelected(true);

app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -608,18 +608,12 @@ public void handleResult(@NonNull final ChannelInfo result) {
608608

609609
binding.channelTitleView.setText(result.getName());
610610
binding.channelSubscriberView.setVisibility(View.VISIBLE);
611-
if (result.getSubscriberCount() >= 0) {
612-
binding.channelSubscriberView.setText(Localization
613-
.shortSubscriberCount(activity, result.getSubscriberCount()));
614-
} else {
615-
binding.channelSubscriberView.setText(R.string.subscribers_count_not_available);
616-
}
611+
binding.channelSubscriberView.setText(Localization.formatSubscriberCount(activity,
612+
result.getSubscriberCount()));
617613

618614
if (!TextUtils.isEmpty(currentInfo.getParentChannelName())) {
619-
binding.subChannelTitleView.setText(String.format(
620-
getString(R.string.channel_created_by),
621-
currentInfo.getParentChannelName())
622-
);
615+
binding.subChannelTitleView.setText(getString(R.string.channel_created_by,
616+
currentInfo.getParentChannelName()));
623617
binding.subChannelTitleView.setVisibility(View.VISIBLE);
624618
binding.subChannelAvatarView.setVisibility(View.VISIBLE);
625619
}

app/src/main/java/org/schabi/newpipe/fragments/list/comments/CommentRepliesFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void readFrom(@NonNull final Queue<Object> savedObjects) throws Exception
142142
protected Single<CommentRepliesInfo> loadResult(final boolean forceLoad) {
143143
return Single.fromCallable(() -> new CommentRepliesInfo(commentsInfoItem,
144144
// the reply count string will be shown as the activity title
145-
Localization.replyCount(requireContext(), commentsInfoItem.getReplyCount())));
145+
Localization.formatReplyCount(requireContext(), commentsInfoItem.getReplyCount())));
146146
}
147147

148148
@Override

app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ private void setStreamCountAndOverallDuration(final List<StreamInfoItem> list,
505505
.sum();
506506
headerBinding.playlistStreamCount.setText(
507507
Localization.concatenateStrings(
508-
Localization.localizeStreamCount(activity, streamCount),
508+
Localization.formatStreamCount(activity, streamCount),
509509
Localization.getDurationString(playlistOverallDurationSeconds,
510510
isDurationComplete, true))
511511
);

app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,15 @@ protected int getDescriptionMaxLineCount(@Nullable final String content) {
100100
private String getDetailLine(final ChannelInfoItem item) {
101101
if (item.getStreamCount() >= 0 && item.getSubscriberCount() >= 0) {
102102
return Localization.concatenateStrings(
103-
Localization.shortSubscriberCount(itemBuilder.getContext(),
103+
Localization.formatSubscriberCount(itemBuilder.getContext(),
104104
item.getSubscriberCount()),
105-
Localization.localizeStreamCount(itemBuilder.getContext(),
105+
Localization.formatStreamCount(itemBuilder.getContext(),
106106
item.getStreamCount()));
107107
} else if (item.getStreamCount() >= 0) {
108-
return Localization.localizeStreamCount(itemBuilder.getContext(),
108+
return Localization.formatStreamCount(itemBuilder.getContext(),
109109
item.getStreamCount());
110110
} else if (item.getSubscriberCount() >= 0) {
111-
return Localization.shortSubscriberCount(itemBuilder.getContext(),
111+
return Localization.formatSubscriberCount(itemBuilder.getContext(),
112112
item.getSubscriberCount());
113113
} else {
114114
return null;

app/src/main/java/org/schabi/newpipe/info_list/holder/CommentInfoItemHolder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,11 @@ public void updateFromItem(final InfoItem infoItem,
121121
repliesButton.setOnClickListener(hasReplies ? v -> openCommentReplies(item) : null);
122122
repliesButton.setVisibility(hasReplies ? View.VISIBLE : View.GONE);
123123
repliesButton.setText(hasReplies
124-
? Localization.replyCount(itemBuilder.getContext(), item.getReplyCount()) : "");
125-
((RelativeLayout.LayoutParams) itemThumbsUpView.getLayoutParams()).topMargin =
126-
hasReplies ? 0 : DeviceUtils.dpToPx(6, itemBuilder.getContext());
127-
124+
? Localization.formatReplyCount(itemBuilder.getContext(), item.getReplyCount())
125+
: "");
126+
final var params = (RelativeLayout.LayoutParams) itemThumbsUpView.getLayoutParams();
127+
params.topMargin = hasReplies ? 0 : DeviceUtils.dpToPx(6, itemBuilder.getContext());
128+
itemThumbsUpView.setLayoutParams(params);
128129

129130
// setup comment content and click listeners to expand/ellipsize it
130131
textEllipsizer.setStreamingService(getServiceById(item.getServiceId()));

app/src/main/java/org/schabi/newpipe/info_list/holder/PlaylistMiniInfoItemHolder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,13 @@ public PlaylistMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder,
3636
@Override
3737
public void updateFromItem(final InfoItem infoItem,
3838
final HistoryRecordManager historyRecordManager) {
39-
if (!(infoItem instanceof PlaylistInfoItem)) {
39+
if (!(infoItem instanceof PlaylistInfoItem item)) {
4040
return;
4141
}
42-
final PlaylistInfoItem item = (PlaylistInfoItem) infoItem;
4342

4443
itemTitleView.setText(item.getName());
4544
itemStreamCountView.setText(Localization
46-
.localizeStreamCountMini(itemStreamCountView.getContext(), item.getStreamCount()));
45+
.formatStreamCountMini(itemStreamCountView.getContext(), item.getStreamCount()));
4746
itemUploaderView.setText(item.getUploaderName());
4847

4948
PicassoHelper.loadPlaylistThumbnail(item.getThumbnails()).into(itemThumbnailView);

app/src/main/java/org/schabi/newpipe/info_list/holder/StreamInfoItemHolder.java

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.schabi.newpipe.R;
88
import org.schabi.newpipe.extractor.InfoItem;
99
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
10-
import org.schabi.newpipe.extractor.stream.StreamType;
1110
import org.schabi.newpipe.info_list.InfoItemBuilder;
1211
import org.schabi.newpipe.local.history.HistoryRecordManager;
1312
import org.schabi.newpipe.util.Localization;
@@ -54,40 +53,35 @@ public void updateFromItem(final InfoItem infoItem,
5453
final HistoryRecordManager historyRecordManager) {
5554
super.updateFromItem(infoItem, historyRecordManager);
5655

57-
if (!(infoItem instanceof StreamInfoItem)) {
58-
return;
56+
if (infoItem instanceof StreamInfoItem item) {
57+
itemAdditionalDetails.setText(getStreamInfoDetailLine(item));
5958
}
60-
final StreamInfoItem item = (StreamInfoItem) infoItem;
61-
62-
itemAdditionalDetails.setText(getStreamInfoDetailLine(item));
6359
}
6460

6561
private String getStreamInfoDetailLine(final StreamInfoItem infoItem) {
66-
String viewsAndDate = "";
67-
if (infoItem.getViewCount() >= 0) {
68-
if (infoItem.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
69-
viewsAndDate = Localization
70-
.listeningCount(itemBuilder.getContext(), infoItem.getViewCount());
71-
} else if (infoItem.getStreamType().equals(StreamType.LIVE_STREAM)) {
72-
viewsAndDate = Localization
73-
.shortWatchingCount(itemBuilder.getContext(), infoItem.getViewCount());
74-
} else {
75-
viewsAndDate = Localization
76-
.shortViewCount(itemBuilder.getContext(), infoItem.getViewCount());
77-
}
62+
final var context = itemBuilder.getContext();
63+
final long count = infoItem.getViewCount();
64+
final String views;
65+
if (count >= 0) {
66+
views = switch (infoItem.getStreamType()) {
67+
case LIVE_STREAM -> Localization.formatWatchingCount(context, count);
68+
case AUDIO_LIVE_STREAM -> Localization.formatListeningCount(context, count);
69+
default -> Localization.formatViewCount(context, count);
70+
};
71+
} else {
72+
views = "";
7873
}
7974

80-
final String uploadDate = Localization.relativeTimeOrTextual(itemBuilder.getContext(),
81-
infoItem.getUploadDate(),
75+
final var uploadDate = Localization.relativeTimeOrTextual(context, infoItem.getUploadDate(),
8276
infoItem.getTextualUploadDate());
8377
if (!TextUtils.isEmpty(uploadDate)) {
84-
if (viewsAndDate.isEmpty()) {
78+
if (views.isEmpty()) {
8579
return uploadDate;
8680
}
8781

88-
return Localization.concatenateStrings(viewsAndDate, uploadDate);
82+
return Localization.concatenateStrings(views, uploadDate);
8983
}
9084

91-
return viewsAndDate;
85+
return views;
9286
}
9387
}

0 commit comments

Comments
 (0)