Adopt localizedStringWithFormat for displayed quantities (#4109)

* Adopt localizedStringWithFormat for displayed quantities

* xib internationalization support is done
This commit is contained in:
A Cœur
2022-11-15 02:30:03 +08:00
committed by GitHub
parent 1d9159fffc
commit bde1359d5d
22 changed files with 114 additions and 110 deletions

View File

@@ -320,7 +320,7 @@ typedef NS_ENUM(NSUInteger, PopupPriority) {
NSUInteger count = self.torrent.fileCount;
if (count != 1)
{
fileString = [NSString stringWithFormat:NSLocalizedString(@"%lu files", "Add torrent -> info"), count];
fileString = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu files", "Add torrent -> info"), count];
}
else
{

View File

@@ -49,7 +49,7 @@
NSParameterAssert(torrent != nil);
[self.fHashes addObject:torrent.hashString];
NSApp.dockTile.badgeLabel = [NSString formattedUInteger:self.fHashes.count];
NSApp.dockTile.badgeLabel = [NSString localizedStringWithFormat:@"%lu", self.fHashes.count];
}
- (void)removeTorrent:(Torrent*)torrent
@@ -59,7 +59,7 @@
[self.fHashes removeObject:torrent.hashString];
if (self.fHashes.count > 0)
{
NSApp.dockTile.badgeLabel = [NSString formattedUInteger:self.fHashes.count];
NSApp.dockTile.badgeLabel = [NSString localizedStringWithFormat:@"%lu", self.fHashes.count];
}
else
{

View File

@@ -969,11 +969,11 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
@"There is an active transfer that will be paused on quit."
" The transfer will automatically resume on the next launch.",
"Confirm Quit panel -> message") :
[NSString stringWithFormat:NSLocalizedString(
@"There are %lu active transfers that will be paused on quit."
" The transfers will automatically resume on the next launch.",
"Confirm Quit panel -> message"),
active];
[NSString localizedStringWithFormat:NSLocalizedString(
@"There are %lu active transfers that will be paused on quit."
" The transfers will automatically resume on the next launch.",
"Confirm Quit panel -> message"),
active];
[alert addButtonWithTitle:NSLocalizedString(@"Quit", "Confirm Quit panel -> button")];
[alert addButtonWithTitle:NSLocalizedString(@"Cancel", "Confirm Quit panel -> button")];
alert.showsSuppressionButton = YES;
@@ -1787,30 +1787,30 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
{
if (deleteData)
{
title = [NSString stringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu transfers from the transfer list"
" and trash the data files?",
"Removal confirm panel -> title"),
selected];
title = [NSString localizedStringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu transfers from the transfer list"
" and trash the data files?",
"Removal confirm panel -> title"),
selected];
}
else
{
title = [NSString stringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu transfers from the transfer list?",
"Removal confirm panel -> title"),
selected];
title = [NSString localizedStringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu transfers from the transfer list?",
"Removal confirm panel -> title"),
selected];
}
if (selected == active)
{
message = [NSString stringWithFormat:NSLocalizedString(@"There are %lu active transfers.", "Removal confirm panel -> message part 1"),
active];
message = [NSString localizedStringWithFormat:NSLocalizedString(@"There are %lu active transfers.", "Removal confirm panel -> message part 1"),
active];
}
else
{
message = [NSString stringWithFormat:NSLocalizedString(@"There are %1$lu transfers (%2$lu active).", "Removal confirm panel -> message part 1"),
selected,
active];
message = [NSString localizedStringWithFormat:NSLocalizedString(@"There are %1$lu transfers (%2$lu active).", "Removal confirm panel -> message part 1"),
selected,
active];
}
message = [message stringByAppendingFormat:@" %@",
NSLocalizedString(
@@ -1983,10 +1983,10 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
}
else
{
message = [NSString stringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu completed transfers from the transfer list?",
"Remove completed confirm panel -> title"),
torrents.count];
message = [NSString localizedStringWithFormat:NSLocalizedString(
@"Are you sure you want to remove %lu completed transfers from the transfer list?",
"Remove completed confirm panel -> title"),
torrents.count];
info = NSLocalizedString(
@"Once removed, continuing the transfers will require the torrent files or magnet links.",
@@ -2040,7 +2040,8 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
else
{
panel.message = [NSString
stringWithFormat:NSLocalizedString(@"Select the new folder for %lu data files.", "Move torrent -> select destination folder"), count];
localizedStringWithFormat:NSLocalizedString(@"Select the new folder for %lu data files.", "Move torrent -> select destination folder"),
count];
}
[panel beginSheetModalForWindow:self.fWindow completionHandler:^(NSInteger result) {
@@ -2314,7 +2315,7 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
NSUInteger totalCount = self.fTorrents.count;
if (totalCount != 1)
{
totalTorrentsString = [NSString stringWithFormat:NSLocalizedString(@"%lu transfers", "Status bar transfer count"), totalCount];
totalTorrentsString = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu transfers", "Status bar transfer count"), totalCount];
}
else
{
@@ -2330,7 +2331,7 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
}
totalTorrentsString = [NSString stringWithFormat:NSLocalizedString(@"%@ of %@", "Status bar transfer count"),
[NSString formattedUInteger:count],
[NSString localizedStringWithFormat:@"%lu", count],
totalTorrentsString];
}
@@ -4971,13 +4972,13 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
if (seeding > 0)
{
NSString* title = [NSString stringWithFormat:NSLocalizedString(@"%lu Seeding", "Dock item - Seeding"), seeding];
NSString* title = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu Seeding", "Dock item - Seeding"), seeding];
[menu addItemWithTitle:title action:nil keyEquivalent:@""];
}
if (downloading > 0)
{
NSString* title = [NSString stringWithFormat:NSLocalizedString(@"%lu Downloading", "Dock item - Downloading"), downloading];
NSString* title = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu Downloading", "Dock item - Downloading"), downloading];
[menu addItemWithTitle:title action:nil keyEquivalent:@""];
}

View File

@@ -182,7 +182,7 @@ NSMutableSet* creatorWindowControllerSet = nil;
{
NSUInteger const count = self.fBuilder->fileCount();
NSString* const fileString = count != 1 ?
[NSString stringWithFormat:NSLocalizedString(@"%lu files", "Create torrent -> info"), count] :
[NSString localizedStringWithFormat:NSLocalizedString(@"%lu files", "Create torrent -> info"), count] :
NSLocalizedString(@"1 file", "Create torrent -> info");
status_string = [NSString stringWithFormat:@"%@, %@", fileString, status_string];
}

View File

@@ -105,7 +105,7 @@
}
else
{
fileString = [NSString stringWithFormat:NSLocalizedString(@"%lu files", "Drag overlay -> torrents"), fileCount];
fileString = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu files", "Drag overlay -> torrents"), fileCount];
}
secondString = [NSString stringWithFormat:@"%@, %@", fileString, secondString];
}
@@ -117,7 +117,7 @@
}
else
{
name = [NSString stringWithFormat:NSLocalizedString(@"%lu Torrent Files", "Drag overlay -> torrents"), count];
name = [NSString localizedStringWithFormat:NSLocalizedString(@"%lu Torrent Files", "Drag overlay -> torrents"), count];
secondString = [secondString stringByAppendingString:@" total"];
icon = [NSImage imageNamed:@"TransmissionDocument.icns"];
}

View File

@@ -25,8 +25,9 @@
_count = count;
self.toolTip = count == 1 ? NSLocalizedString(@"1 transfer", "Filter Button -> tool tip") :
[NSString stringWithFormat:NSLocalizedString(@"%lu transfers", "Filter Bar Button -> tool tip"), count];
self.toolTip = count == 1 ?
NSLocalizedString(@"1 transfer", "Filter Button -> tool tip") :
[NSString localizedStringWithFormat:NSLocalizedString(@"%lu transfers", "Filter Bar Button -> tool tip"), count];
}
@end

View File

@@ -160,9 +160,9 @@
{
Torrent* torrent = self.fTorrents[0];
#warning candidate for localizedStringWithFormat (although then we'll get two commas)
// Associated Press Style: "Use a semicolon to clarify a series that includes a number of commas."
NSString* piecesString = !torrent.magnet ?
[NSString stringWithFormat:@"%ld, %@", torrent.pieceCount, [NSString stringForFileSize:torrent.pieceSize]] :
[NSString localizedStringWithFormat:@"%ld; %@", torrent.pieceCount, [NSString stringForFileSize:torrent.pieceSize]] :
@"";
self.fPiecesField.stringValue = piecesString;

View File

@@ -187,7 +187,8 @@ static NSString* const kWebSeedAnimationId = @"webSeed";
}
else
{
connectedText = [NSString stringWithFormat:NSLocalizedString(@"%lu Connected", "Inspector -> Peers tab -> peers"), connected];
connectedText = [NSString
localizedStringWithFormat:NSLocalizedString(@"%lu Connected", "Inspector -> Peers tab -> peers"), connected];
}
if (connected > 0)
@@ -196,12 +197,12 @@ static NSString* const kWebSeedAnimationId = @"webSeed";
if (toUs > 0)
{
[upDownComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"DL from %lu", "Inspector -> Peers tab -> peers"), toUs]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"DL from %lu", "Inspector -> Peers tab -> peers"), toUs]];
}
if (fromUs > 0)
{
[upDownComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"UL to %lu", "Inspector -> Peers tab -> peers"), fromUs]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"UL to %lu", "Inspector -> Peers tab -> peers"), fromUs]];
}
if (upDownComponents.count > 0)
{
@@ -211,38 +212,38 @@ static NSString* const kWebSeedAnimationId = @"webSeed";
NSMutableArray* fromComponents = [NSMutableArray arrayWithCapacity:7];
if (tracker > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu tracker", "Inspector -> Peers tab -> peers"), tracker]];
[fromComponents addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu tracker", "Inspector -> Peers tab -> peers"),
tracker]];
}
if (incoming > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu incoming", "Inspector -> Peers tab -> peers"), incoming]];
[fromComponents addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu incoming", "Inspector -> Peers tab -> peers"),
incoming]];
}
if (cache > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu cache", "Inspector -> Peers tab -> peers"), cache]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu cache", "Inspector -> Peers tab -> peers"), cache]];
}
if (lpd > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu local discovery", "Inspector -> Peers tab -> peers"), lpd]];
[fromComponents addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu local discovery", "Inspector -> Peers tab -> peers"),
lpd]];
}
if (pex > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu PEX", "Inspector -> Peers tab -> peers"), pex]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu PEX", "Inspector -> Peers tab -> peers"), pex]];
}
if (dht > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu DHT", "Inspector -> Peers tab -> peers"), dht]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu DHT", "Inspector -> Peers tab -> peers"), dht]];
}
if (ltep > 0)
{
[fromComponents
addObject:[NSString stringWithFormat:NSLocalizedString(@"%lu LTEP", "Inspector -> Peers tab -> peers"), ltep]];
addObject:[NSString localizedStringWithFormat:NSLocalizedString(@"%lu LTEP", "Inspector -> Peers tab -> peers"), ltep]];
}
connectedText = [connectedText stringByAppendingFormat:@"\n%@", [fromComponents componentsJoinedByString:@", "]];

View File

@@ -410,8 +410,8 @@ typedef NS_ENUM(NSInteger, TrackerSegmentTag) {
if (removeTrackerCount > 1)
{
alert.messageText = [NSString
stringWithFormat:NSLocalizedString(@"Are you sure you want to remove %lu trackers?", "Remove trackers alert -> title"),
removeTrackerCount];
localizedStringWithFormat:NSLocalizedString(@"Are you sure you want to remove %lu trackers?", "Remove trackers alert -> title"),
removeTrackerCount];
alert.informativeText = NSLocalizedString(
@"Once removed, Transmission will no longer attempt to contact them."
" This cannot be undone.",

View File

@@ -504,7 +504,7 @@ typedef NS_ENUM(unsigned int, tabTag) {
self.fImageView.image = [NSImage imageNamed:NSImageNameMultipleDocuments];
self.fNameField.stringValue = [NSString
stringWithFormat:NSLocalizedString(@"%lu Torrents Selected", "Inspector -> selected torrents"), numberSelected];
localizedStringWithFormat:NSLocalizedString(@"%lu Torrents Selected", "Inspector -> selected torrents"), numberSelected];
self.fNameField.hidden = NO;
uint64_t size = 0;
@@ -529,7 +529,8 @@ typedef NS_ENUM(unsigned int, tabTag) {
}
else
{
fileString = [NSString stringWithFormat:NSLocalizedString(@"%lu files", "Inspector -> selected torrents"), fileCount];
fileString = [NSString
localizedStringWithFormat:NSLocalizedString(@"%lu files", "Inspector -> selected torrents"), fileCount];
}
[fileStrings addObject:fileString];
}
@@ -543,7 +544,7 @@ typedef NS_ENUM(unsigned int, tabTag) {
else
{
magnetString = [NSString
stringWithFormat:NSLocalizedString(@"%lu magnetized transfers", "Inspector -> selected torrents"), magnetCount];
localizedStringWithFormat:NSLocalizedString(@"%lu magnetized transfers", "Inspector -> selected torrents"), magnetCount];
}
[fileStrings addObject:magnetString];
}
@@ -606,7 +607,8 @@ typedef NS_ENUM(unsigned int, tabTag) {
}
else
{
fileString = [NSString stringWithFormat:NSLocalizedString(@"%lu files", "Inspector -> selected torrents"), fileCount];
fileString = [NSString
localizedStringWithFormat:NSLocalizedString(@"%lu files", "Inspector -> selected torrents"), fileCount];
}
basicString = [NSString stringWithFormat:@"%@, %@", fileString, basicString];
}

View File

@@ -9,8 +9,6 @@
@property(nonatomic, class, readonly) NSString* ellipsis;
@property(nonatomic, readonly, copy) NSString* stringByAppendingEllipsis;
+ (NSString*)formattedUInteger:(NSUInteger)value;
+ (NSString*)stringForFileSize:(uint64_t)size;
+ (NSString*)stringForFilePartialSize:(uint64_t)partialSize fullSize:(uint64_t)fullSize;

View File

@@ -25,12 +25,6 @@
return [self stringByAppendingString:NSString.ellipsis];
}
#warning use localizedStringWithFormat: directly when 10.9-only and stringsdict translations are in place
+ (NSString*)formattedUInteger:(NSUInteger)value
{
return [NSString localizedStringWithFormat:@"%lu", value];
}
// Maximum supported localization is 9.22 EB, which is the maximum supported filesystem size by macOS, 8 EiB.
// https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/VolumeFormatComparison/VolumeFormatComparison.html
+ (NSString*)stringForFileSize:(uint64_t)size
@@ -44,7 +38,7 @@
{
NSByteCountFormatter* fileSizeFormatter = [[NSByteCountFormatter alloc] init];
NSString* fullString = [fileSizeFormatter stringFromByteCount:fullSize];
NSString* fullSizeString = [fileSizeFormatter stringFromByteCount:fullSize];
//figure out the magnitude of the two, since we can't rely on comparing the units because of localization and pluralization issues (for example, "1 byte of 2 bytes")
BOOL partialUnitsSame;
@@ -61,9 +55,9 @@
}
fileSizeFormatter.includesUnit = !partialUnitsSame;
NSString* partialString = [fileSizeFormatter stringFromByteCount:partialSize];
NSString* partialSizeString = [fileSizeFormatter stringFromByteCount:partialSize];
return [NSString stringWithFormat:NSLocalizedString(@"%@ of %@", "file size string"), partialString, fullString];
return [NSString stringWithFormat:NSLocalizedString(@"%@ of %@", "file size string"), partialSizeString, fullSizeString];
}
+ (NSString*)stringForSpeed:(CGFloat)speed

View File

@@ -607,8 +607,8 @@ static NSString* const kWebUIURLFormat = @"http://localhost:%ld/";
if (exists)
{
self.fBlocklistMessageField.stringValue = [NSString
stringWithFormat:NSLocalizedString(@"%lu IP address rules in list", "Prefs -> blocklist -> message"),
tr_blocklistGetRuleCount(self.fHandle)];
localizedStringWithFormat:NSLocalizedString(@"%lu IP address rules in list", "Prefs -> blocklist -> message"),
tr_blocklistGetRuleCount(self.fHandle)];
}
else
{

View File

@@ -86,7 +86,7 @@ OSStatus GeneratePreviewForURL(void* thisInterface, QLPreviewRequestRef preview,
if (is_multifile)
{
NSString* fileCountString = [NSString
stringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu files", nil, bundle, "quicklook file count"), n_files];
localizedStringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu files", nil, bundle, "quicklook file count"), n_files];
fileSizeString = [NSString stringWithFormat:@"%@, %@", fileCountString, fileSizeString];
}
[htmlString appendFormat:@"<p>%@</p>", fileSizeString];
@@ -143,7 +143,8 @@ OSStatus GeneratePreviewForURL(void* thisInterface, QLPreviewRequestRef preview,
NSString* headerTitleString = n_webseeds == 1 ?
NSLocalizedStringFromTableInBundle(@"1 Web Seed", nil, bundle, "quicklook web seed header") :
[NSString stringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Web Seeds", nil, bundle, "quicklook web seed header"), n_webseeds];
[NSString localizedStringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Web Seeds", nil, bundle, "quicklook web seed header"),
n_webseeds];
[listSection appendFormat:@"<tr><th>%@</th></tr>", headerTitleString];
for (size_t i = 0; i < n_webseeds; ++i)
@@ -165,7 +166,7 @@ OSStatus GeneratePreviewForURL(void* thisInterface, QLPreviewRequestRef preview,
auto const n = std::size(announce_list);
NSString* headerTitleString = n == 1 ?
NSLocalizedStringFromTableInBundle(@"1 Tracker", nil, bundle, "quicklook tracker header") :
[NSString stringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Trackers", nil, bundle, "quicklook tracker header"), n];
[NSString localizedStringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Trackers", nil, bundle, "quicklook tracker header"), n];
[listSection appendFormat:@"<tr><th>%@</th></tr>", headerTitleString];
#warning handle tiers?
@@ -185,7 +186,7 @@ OSStatus GeneratePreviewForURL(void* thisInterface, QLPreviewRequestRef preview,
[listSection appendString:@"<table>"];
NSString* fileTitleString = [NSString
stringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Files", nil, bundle, "quicklook file header"), n_files];
localizedStringWithFormat:NSLocalizedStringFromTableInBundle(@"%lu Files", nil, bundle, "quicklook file header"), n_files];
[listSection appendFormat:@"<tr><th>%@</th></tr>", fileTitleString];
#warning display folders?

View File

@@ -222,7 +222,7 @@ tr_session* fLib = NULL;
else
{
self.fNumOpenedField.stringValue = [NSString
stringWithFormat:NSLocalizedString(@"%llu times", "stats window -> times opened"), statsAll.sessionCount];
localizedStringWithFormat:NSLocalizedString(@"%llu times", "stats window -> times opened"), statsAll.sessionCount];
}
}

View File

@@ -166,8 +166,8 @@ typedef NS_ENUM(unsigned int, statusTag) {
{
if ([NSUserDefaults.standardUserDefaults boolForKey:@"CheckUpload"])
{
uploadText = [NSString stringWithFormat:NSLocalizedString(@"%ld KB/s", "Status Bar -> speed tooltip"),
[NSUserDefaults.standardUserDefaults integerForKey:@"UploadLimit"]];
uploadText = [NSString localizedStringWithFormat:NSLocalizedString(@"%ld KB/s", "Status Bar -> speed tooltip"),
[NSUserDefaults.standardUserDefaults integerForKey:@"UploadLimit"]];
}
else
{
@@ -176,8 +176,8 @@ typedef NS_ENUM(unsigned int, statusTag) {
if ([NSUserDefaults.standardUserDefaults boolForKey:@"CheckDownload"])
{
downloadText = [NSString stringWithFormat:NSLocalizedString(@"%ld KB/s", "Status Bar -> speed tooltip"),
[NSUserDefaults.standardUserDefaults integerForKey:@"DownloadLimit"]];
downloadText = [NSString localizedStringWithFormat:NSLocalizedString(@"%ld KB/s", "Status Bar -> speed tooltip"),
[NSUserDefaults.standardUserDefaults integerForKey:@"DownloadLimit"]];
}
else
{

View File

@@ -1107,11 +1107,11 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error** error)
break;
case TR_STATUS_DOWNLOAD:
if (self.totalPeersConnected != 1)
if (NSUInteger const totalPeersCount = self.totalPeersConnected; totalPeersCount != 1)
{
string = [NSString stringWithFormat:NSLocalizedString(@"Downloading from %lu of %lu peers", "Torrent -> status string"),
self.peersSendingToUs,
self.totalPeersConnected];
string = [NSString localizedStringWithFormat:NSLocalizedString(@"Downloading from %lu of %lu peers", "Torrent -> status string"),
self.peersSendingToUs,
totalPeersCount];
}
else
{
@@ -1122,13 +1122,14 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error** error)
if (NSUInteger const webSeedCount = self.fStat->webseedsSendingToUs; webSeedCount > 0)
{
NSString* webSeedString;
if (webSeedCount == 1)
if (webSeedCount != 1)
{
webSeedString = NSLocalizedString(@"web seed", "Torrent -> status string");
webSeedString = [NSString
localizedStringWithFormat:NSLocalizedString(@"%lu web seeds", "Torrent -> status string"), webSeedCount];
}
else
{
webSeedString = [NSString stringWithFormat:NSLocalizedString(@"%lu web seeds", "Torrent -> status string"), webSeedCount];
webSeedString = NSLocalizedString(@"web seed", "Torrent -> status string");
}
string = [string stringByAppendingFormat:@" + %@", webSeedString];
@@ -1137,14 +1138,18 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error** error)
break;
case TR_STATUS_SEED:
if (self.totalPeersConnected != 1)
if (NSUInteger const totalPeersCount = self.totalPeersConnected; totalPeersCount != 1)
{
string = [NSString stringWithFormat:NSLocalizedString(@"Seeding to %1$lu of %2$lu peers", "Torrent -> status string"),
self.peersGettingFromUs,
self.totalPeersConnected];
string = [NSString localizedStringWithFormat:NSLocalizedString(@"Seeding to %1$lu of %2$lu peers", "Torrent -> status string"),
self.peersGettingFromUs,
totalPeersCount];
}
else
{
// TODO: "%lu of 1" vs "%u of 1" disparity
// - either change "Downloading from %lu of 1 peer" to "Downloading from %u of 1 peer"
// - or change "Seeding to %u of 1 peer" to "Seeding to %lu of 1 peer"
// then update Transifex accordingly
string = [NSString stringWithFormat:NSLocalizedString(@"Seeding to %u of 1 peer", "Torrent -> status string"),
(unsigned int)self.peersGettingFromUs];
}

View File

@@ -257,7 +257,7 @@ static NSTimeInterval const kToggleProgressSeconds = 0.175;
}
else
{
return [NSString stringWithFormat:NSLocalizedString(@"%lu transfers", "Torrent table -> group row -> tooltip"), count];
return [NSString localizedStringWithFormat:NSLocalizedString(@"%lu transfers", "Torrent table -> group row -> tooltip"), count];
}
}
else
@@ -817,17 +817,17 @@ static NSTimeInterval const kToggleProgressSeconds = 0.175;
NSMenuItem* item;
if (menu.numberOfItems == 3)
{
NSInteger const speedLimitActionValue[] = { 50, 100, 250, 500, 1000, 2500, 5000, 10000, -1 };
static NSArray<NSNumber*>* const speedLimitActionValues = @[ @50, @100, @250, @500, @1000, @2500, @5000, @10000 ];
for (NSInteger i = 0; speedLimitActionValue[i] != -1; i++)
for (NSNumber* i in speedLimitActionValues)
{
item = [[NSMenuItem alloc]
initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"%ld KB/s", "Action menu -> upload/download limit"),
speedLimitActionValue[i]]
initWithTitle:[NSString localizedStringWithFormat:NSLocalizedString(@"%ld KB/s", "Action menu -> upload/download limit"),
i.integerValue]
action:@selector(setQuickLimit:)
keyEquivalent:@""];
item.target = self;
item.representedObject = @(speedLimitActionValue[i]);
item.representedObject = i;
[menu addItem:item];
}
}
@@ -837,8 +837,8 @@ static NSTimeInterval const kToggleProgressSeconds = 0.175;
item = [menu itemWithTag:ActionMenuTagLimit];
item.state = limit ? NSControlStateValueOn : NSControlStateValueOff;
item.title = [NSString stringWithFormat:NSLocalizedString(@"Limit (%ld KB/s)", "torrent action menu -> upload/download limit"),
[self.fMenuTorrent speedLimit:upload]];
item.title = [NSString localizedStringWithFormat:NSLocalizedString(@"Limit (%ld KB/s)", "torrent action menu -> upload/download limit"),
[self.fMenuTorrent speedLimit:upload]];
item = [menu itemWithTag:ActionMenuTagUnlimited];
item.state = !limit ? NSControlStateValueOn : NSControlStateValueOff;
@@ -848,15 +848,15 @@ static NSTimeInterval const kToggleProgressSeconds = 0.175;
NSMenuItem* item;
if (menu.numberOfItems == 4)
{
float const ratioLimitActionValue[] = { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, -1.0 };
static NSArray<NSNumber*>* const ratioLimitActionValue = @[ @0.25, @0.5, @0.75, @1.0, @1.5, @2.0, @3.0 ];
for (NSInteger i = 0; ratioLimitActionValue[i] != -1.0; i++)
for (NSNumber* i in ratioLimitActionValue)
{
item = [[NSMenuItem alloc] initWithTitle:[NSString localizedStringWithFormat:@"%.2f", ratioLimitActionValue[i]]
item = [[NSMenuItem alloc] initWithTitle:[NSString localizedStringWithFormat:@"%.2f", i.floatValue]
action:@selector(setQuickRatio:)
keyEquivalent:@""];
item.target = self;
item.representedObject = @(ratioLimitActionValue[i]);
item.representedObject = i;
[menu addItem:item];
}
}

View File

@@ -297,7 +297,8 @@ NSMutableSet* fTrackerIconLoading;
- (NSAttributedString*)attributedCount:(NSInteger)count
{
NSString* countString = count != -1 ? [NSString stringWithFormat:@"%ld", count] : NSLocalizedString(@"N/A", "tracker peer stat");
NSString* countString = count != -1 ? [NSString localizedStringWithFormat:@"%ld", count] :
NSLocalizedString(@"N/A", "tracker peer stat");
return [[NSAttributedString alloc] initWithString:countString attributes:self.fStatusAttributes];
}

View File

@@ -139,8 +139,8 @@
}
else
{
peerString = [NSString stringWithFormat:NSLocalizedString(@"got %lu peers", "Tracker last announce"),
(size_t)self.fStat.lastAnnouncePeerCount];
peerString = [NSString localizedStringWithFormat:NSLocalizedString(@"got %lu peers", "Tracker last announce"),
(size_t)self.fStat.lastAnnouncePeerCount];
}
baseString = [baseString stringByAppendingFormat:@" (%@)", peerString];
}