[vlc-commits] [Git][videolan/vlc][master] 3 commits: macosx: Use existing convenience vlc_ngettext for plural form data type detail strings
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sun Mar 29 11:01:36 UTC 2026
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
d5b100b8 by Claudio Cambra at 2026-03-29T12:47:17+02:00
macosx: Use existing convenience vlc_ngettext for plural form data type detail strings
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
b65aab19 by Claudio Cambra at 2026-03-29T12:47:17+02:00
macosx: Also use vlc_ngettext in all audio groups media library item
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
a41101a4 by Claudio Cambra at 2026-03-29T12:47:17+02:00
macosx: Simplify plural string creation with new _NPS macro
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
3 changed files:
- modules/gui/macosx/extensions/NSString+Helpers.h
- modules/gui/macosx/library/VLCLibraryDataTypes.m
- modules/gui/macosx/library/audio-library/VLCLibraryAllAudioGroupsMediaLibraryItem.m
Changes:
=====================================
modules/gui/macosx/extensions/NSString+Helpers.h
=====================================
@@ -35,6 +35,11 @@
*/
#define _NS(s) NSTR(s)
+/**
+ * Get a pluralized translation string
+ */
+#define _NPS(s, p, n) [NSString stringWithFormat:toNSStr(vlc_ngettext(s, p, n)), (n)]
+
/**
* Get a contextualized translation string
*
=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.m
=====================================
@@ -524,19 +524,9 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
- (NSString *)durationString
{
- NSString *countMetadataString;
- if (_numberOfAlbums > 1) {
- countMetadataString = [NSString stringWithFormat:_NS("%u albums"), _numberOfAlbums];
- } else {
- countMetadataString = _NS("1 album");
- }
- if (_numberOfTracks > 1) {
- countMetadataString = [countMetadataString stringByAppendingFormat:@", %@", [NSString stringWithFormat:_NS("%u songs"), _numberOfTracks]];
- } else {
- countMetadataString = [countMetadataString stringByAppendingFormat:@", %@", _NS("1 song")];
- }
-
- return countMetadataString;
+ NSString * const albumString = _NPS("%u album", "%u albums", _numberOfAlbums);
+ NSString * const songString = _NPS("%u song", "%u songs", _numberOfTracks);
+ return [NSString stringWithFormat:@"%@, %@", albumString, songString];
}
- (NSString *)genreString
@@ -766,11 +756,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
- (NSString *)durationString
{
- if (_numberOfTracks > 1) {
- return [NSString stringWithFormat:_NS("%u songs"), _numberOfTracks];
- } else {
- return _NS("1 song");
- }
+ return _NPS("%u song", "%u songs", _numberOfTracks);
}
- (NSArray<VLCMediaLibraryAlbum *> *)albums
@@ -1766,8 +1752,9 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
self.smallArtworkMRL = p_show->psz_artwork_mrl ? toNSStr(p_show->psz_artwork_mrl) : @"";
self.smallArtworkGenerated = self.smallArtworkMRL.length > 0;
self.displayString = self.name;
- self.primaryDetailString =
- [NSString stringWithFormat:_NS("%u seasons, %u episodes"), _seasonCount, _episodeCount];
+ NSString * const seasonString = _NPS("%u season", "%u seasons", _seasonCount);
+ NSString * const episodeString = _NPS("%u episode", "%u episodes", _episodeCount);
+ self.primaryDetailString = [NSString stringWithFormat:@"%@, %@", seasonString, episodeString];
self.secondaryDetailString = [NSString stringWithFormat:_NS("Released in %u"), _releaseYear];
self.durationString = self.secondaryDetailString;
}
@@ -1896,12 +1883,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
withMediaItems:(NSArray<VLCMediaLibraryMediaItem *> *)mediaItems
{
- NSString *detailString;
- if (mediaItems.count == 1) {
- detailString = _NS("1 item");
- } else {
- detailString = [NSString stringWithFormat:_NS("%lu items"), (unsigned long)mediaItems.count];
- }
+ NSString * const detailString = _NPS("%lu item", "%lu items", (unsigned long)mediaItems.count);
self = [self initWithDisplayString:displayString
withPrimaryDetailString:detailString
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAllAudioGroupsMediaLibraryItem.m
=====================================
@@ -55,9 +55,9 @@
_numberOfTracks = _mediaItems.count;
const NSUInteger numberOfAlbums = libraryModel.numberOfAlbums;
- NSString * const primaryDetailString = [NSString stringWithFormat:_NS("%li albums, %li songs"),
- numberOfAlbums,
- _numberOfTracks];
+ NSString * const albumString = _NPS("%li album", "%li albums", numberOfAlbums);
+ NSString * const songString = _NPS("%li song", "%li songs", _numberOfTracks);
+ NSString * const primaryDetailString = [NSString stringWithFormat:@"%@, %@", albumString, songString];
return [super initWithDisplayString:displayString
withPrimaryDetailString:primaryDetailString
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/42e66c82bd7e2180af846773ff6fcefcc41e2fd9...a41101a4965187e16a399251825564eea8a775b6
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/42e66c82bd7e2180af846773ff6fcefcc41e2fd9...a41101a4965187e16a399251825564eea8a775b6
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list