Use localized strings where necessary. Also a fix for the port checker. Thanks to Cédric Luthi for these.

This commit is contained in:
Mitchell Livingston 2006-10-24 20:34:13 +00:00
parent 5b882ce015
commit 72d0964ffc
10 changed files with 530 additions and 129 deletions

View File

@ -92,6 +92,7 @@
A21610FC0A050B1700E8E4C1 /* MenuButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A21610FB0A050B1700E8E4C1 /* MenuButton.m */; };
A2173E1C0A33C1B300B0D8AB /* ActionButtonPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = A2173E1B0A33C1B300B0D8AB /* ActionButtonPressed.png */; };
A21DFF100A292B2B007C5F76 /* Transfers.png in Resources */ = {isa = PBXBuildFile; fileRef = A21DFF0F0A292B2B007C5F76 /* Transfers.png */; };
A22A8D560AEEAFA5007E9CB9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A22A8D540AEEAFA5007E9CB9 /* Localizable.strings */; };
A2305A800A3DC9E400AB2D77 /* ProgressBarWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7C0A3DC9E400AB2D77 /* ProgressBarWhite.png */; };
A2305A810A3DC9E400AB2D77 /* ProgressBarBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7D0A3DC9E400AB2D77 /* ProgressBarBlue.png */; };
A2305A820A3DC9E400AB2D77 /* ProgressBarGray.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7E0A3DC9E400AB2D77 /* ProgressBarGray.png */; };
@ -316,6 +317,7 @@
A21610FB0A050B1700E8E4C1 /* MenuButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MenuButton.m; path = macosx/MenuButton.m; sourceTree = "<group>"; };
A2173E1B0A33C1B300B0D8AB /* ActionButtonPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ActionButtonPressed.png; path = macosx/Images/ActionButtonPressed.png; sourceTree = "<group>"; };
A21DFF0F0A292B2B007C5F76 /* Transfers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Transfers.png; path = macosx/Images/Transfers.png; sourceTree = "<group>"; };
A22A8D550AEEAFA5007E9CB9 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = macosx/English.lproj/Localizable.strings; sourceTree = "<group>"; };
A2305A7C0A3DC9E400AB2D77 /* ProgressBarWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarWhite.png; path = macosx/Images/ProgressBarWhite.png; sourceTree = "<group>"; };
A2305A7D0A3DC9E400AB2D77 /* ProgressBarBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarBlue.png; path = macosx/Images/ProgressBarBlue.png; sourceTree = "<group>"; };
A2305A7E0A3DC9E400AB2D77 /* ProgressBarGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarGray.png; path = macosx/Images/ProgressBarGray.png; sourceTree = "<group>"; };
@ -496,6 +498,7 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
A22A8D540AEEAFA5007E9CB9 /* Localizable.strings */,
A259316A0A73B2CC002F4FE7 /* Transmission Help */,
A2F8951E0A2D4BA500ED2127 /* Credits.rtf */,
A2305AA40A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png */,
@ -852,6 +855,7 @@
35B038130AC5B6EB00A10FDF /* ResumeNoWaitOn.png in Resources */,
35B038140AC5B6EC00A10FDF /* ResumeNoWaitOff.png in Resources */,
A29C8B330ACC6E93000ED9F9 /* YellowDot.tiff in Resources */,
A22A8D560AEEAFA5007E9CB9 /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -969,6 +973,14 @@
name = MessageWindow.nib;
sourceTree = "<group>";
};
A22A8D540AEEAFA5007E9CB9 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
A22A8D550AEEAFA5007E9CB9 /* English */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
A2912C520A2956E80097A0CA /* PrefsWindow.nib */ = {
isa = PBXVariantGroup;
children = (

View File

@ -201,8 +201,8 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
? fSpeedLimitBlueImage : fSpeedLimitGraphiteImage];
}
[fActionButton setToolTip: @"Shortcuts for changing global settings."];
[fSpeedLimitButton setToolTip: @"Speed Limit overrides the total bandwidth limits with its own limits."];
[fActionButton setToolTip: NSLocalizedString(@"Shortcuts for changing global settings.", "Main window -> 1st bottom left button (action) tooltip")];
[fSpeedLimitButton setToolTip: NSLocalizedString(@"Speed Limit overrides the total bandwidth limits with its own limits.", "Main window -> 2nd bottom left button (turtle) tooltip")];
[fTableView setTorrents: fDisplayedTorrents];
[[fTableView tableColumnWithIdentifier: @"Torrent"] setDataCell: [[TorrentCell alloc] init]];
@ -277,7 +277,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[currentFilterButton setEnabled: YES];
//set upload limit action button
[fUploadLimitItem setTitle: [NSString stringWithFormat: @"Limit (%d KB/s)",
[fUploadLimitItem setTitle: [NSString stringWithFormat: NSLocalizedString(@"Limit (%d KB/s)", "Action context menu -> upload limit"),
[fDefaults integerForKey: @"UploadLimit"]]];
if ([fDefaults boolForKey: @"CheckUpload"])
[fUploadLimitItem setState: NSOnState];
@ -285,7 +285,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[fUploadNoLimitItem setState: NSOnState];
//set download limit action menu
[fDownloadLimitItem setTitle: [NSString stringWithFormat: @"Limit (%d KB/s)",
[fDownloadLimitItem setTitle: [NSString stringWithFormat: NSLocalizedString(@"Limit (%d KB/s)", "Action context menu -> download limit"),
[fDefaults integerForKey: @"DownloadLimit"]]];
if ([fDefaults boolForKey: @"CheckDownload"])
[fDownloadLimitItem setState: NSOnState];
@ -293,7 +293,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[fDownloadNoLimitItem setState: NSOnState];
//set ratio action menu
[fRatioSetItem setTitle: [NSString stringWithFormat: @"Stop at Ratio (%.2f)",
[fRatioSetItem setTitle: [NSString stringWithFormat: NSLocalizedString(@"Stop at Ratio (%.2f)", "Action context menu -> ratio stop"),
[fDefaults floatForKey: @"RatioLimit"]]];
if ([fDefaults boolForKey: @"RatioCheck"])
[fRatioSetItem setState: NSOnState];
@ -394,11 +394,11 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
if ([fDefaults boolForKey: @"CheckQuitDownloading"] ? downloading > 0 : active > 0)
{
NSString * message = active == 1
? @"There is an active transfer. Do you really want to quit?"
? NSLocalizedString(@"There is an active transfer. Do you really want to quit?", "Confirm Quit panel -> message")
: [NSString stringWithFormat:
@"There are %d active transfers. Do you really want to quit?", active];
NSLocalizedString(@"There are %d active transfers. Do you really want to quit?", "Confirm Quit panel -> message"), active];
NSBeginAlertSheet(@"Confirm Quit", @"Quit", @"Cancel", nil, fWindow, self,
NSBeginAlertSheet(NSLocalizedString(@"Confirm Quit", "Confirm Quit panel -> title"), NSLocalizedString(@"Quit", "Confirm Quit panel -> button"), NSLocalizedString(@"Cancel", "Confirm Quit panel -> button"), nil, fWindow, self,
@selector(quitSheetDidEnd:returnCode:contextInfo:), nil, nil, message);
return NSTerminateLater;
}
@ -541,7 +541,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[panel setCanChooseFiles: NO];
[panel setCanChooseDirectories: YES];
[panel setMessage: [NSString stringWithFormat: @"Select the download folder for \"%@\"", [torrent name]]];
[panel setMessage: [NSString stringWithFormat: NSLocalizedString(@"Select the download folder for \"%@\"", "Open torrent -> select destination folder"), [torrent name]]];
NSDictionary * dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: torrent, @"Torrent", files, @"Files", nil];
@ -725,25 +725,25 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
int selected = [fTableView numberOfSelectedRows];
if (selected == 1)
{
title = [NSString stringWithFormat: @"Comfirm Removal of \"%@\"",
title = [NSString stringWithFormat: NSLocalizedString(@"Confirm Removal of \"%@\"", "Removal confirm panel -> title"),
[[fDisplayedTorrents objectAtIndex: [fTableView selectedRow]] name]];
message = @"This transfer is active."
message = NSLocalizedString(@"This transfer is active."
" Once removed, continuing the transfer will require the torrent file."
" Do you really want to remove it?";
" Do you really want to remove it?", "Removal confirm panel -> message");
}
else
{
title = [NSString stringWithFormat: @"Comfirm Removal of %d Transfers", selected];
title = [NSString stringWithFormat: NSLocalizedString(@"Confirm Removal of %d Transfers", "Removal confirm panel -> title"), selected];
if (selected == active)
message = [NSString stringWithFormat: @"There are %d active transfers.", active];
message = [NSString stringWithFormat: NSLocalizedString(@"There are %d active transfers.", "Removal confirm panel -> message part 1"), active];
else
message = [NSString stringWithFormat: @"There are %d transfers (%d active).", selected, active];
message = [NSString stringWithFormat: NSLocalizedString(@"There are %d transfers (%d active).", "Removal confirm panel -> message part 1"), selected, active];
message = [message stringByAppendingString:
@" Once removed, continuing the transfers will require the torrent files."
" Do you really want to remove them?"];
NSLocalizedString(@" Once removed, continuing the transfers will require the torrent files."
" Do you really want to remove them?", "Removal confirm panel -> message part 2")];
}
NSBeginAlertSheet(title, @"Remove", @"Cancel", nil, fWindow, self,
NSBeginAlertSheet(title, NSLocalizedString(@"Remove", "Removal confirm panel -> button"), NSLocalizedString(@"Cancel", "Removal confirm panel -> button"), nil, fWindow, self,
nil, @selector(removeSheetDidEnd:returnCode:contextInfo:), dict, message);
return;
}
@ -864,10 +864,10 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
if (![[NSFileManager defaultManager] fileExistsAtPath: [torrent torrentLocation]])
{
NSAlert * alert = [[NSAlert alloc] init];
[alert addButtonWithTitle: @"OK"];
[alert setMessageText: [NSString stringWithFormat: @"Copy of \"%@\" Cannot Be Created", [torrent name]]];
[alert addButtonWithTitle: NSLocalizedString(@"OK", "Torrent file copy alert -> button")];
[alert setMessageText: [NSString stringWithFormat: NSLocalizedString(@"Copy of \"%@\" Cannot Be Created", "Torrent file copy alert -> title"), [torrent name]]];
[alert setInformativeText: [NSString stringWithFormat:
@"The torrent file (%@) cannot be found.", [torrent torrentLocation]]];
NSLocalizedString(@"The torrent file (%@) cannot be found.", "Torrent file copy alert -> message"), [torrent torrentLocation]]];
[alert setAlertStyle: NSWarningAlertStyle];
[alert runModal];
@ -960,8 +960,8 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
tr_torrentRates(fLib, & downloadRate, & uploadRate);
if (![fStatusBar isHidden])
{
[fTotalDLField setStringValue: [@"Total DL: " stringByAppendingString: [NSString stringForSpeed: downloadRate]]];
[fTotalULField setStringValue: [@"Total UL: " stringByAppendingString: [NSString stringForSpeed: uploadRate]]];
[fTotalDLField setStringValue: [NSLocalizedString(@"Total DL: ", "Status bar -> total download") stringByAppendingString: [NSString stringForSpeed: downloadRate]]];
[fTotalULField setStringValue: [NSLocalizedString(@"Total UL: ", "Status bar -> total upload") stringByAppendingString: [NSString stringForSpeed: uploadRate]]];
}
//update non-constant parts of info window
@ -986,7 +986,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[sound play];
}
[GrowlApplicationBridge notifyWithTitle: @"Download Complete" description: [torrent name]
[GrowlApplicationBridge notifyWithTitle: NSLocalizedString(@"Download Complete", "Growl notification title") description: [torrent name]
notificationName: GROWL_DOWNLOAD_COMPLETE iconData: nil priority: 0 isSticky: NO clickContext: nil];
if (![fWindow isKeyWindow])
@ -1228,7 +1228,10 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[totalTorrentsString appendFormat: @"%d/", [fDisplayedTorrents count]];
int totalCount = [fTorrents count];
[totalTorrentsString appendFormat: @"%d Transfer%s", totalCount, totalCount == 1 ? "" : "s"];
if (totalCount > 1)
[totalTorrentsString appendFormat: NSLocalizedString(@"%d Transfers", "Status bar transfer count"), totalCount];
else
[totalTorrentsString appendFormat: NSLocalizedString(@"%d Transfer", "Status bar transfer count"), totalCount];
[fTotalTorrentsField setStringValue: totalTorrentsString];
@ -1334,8 +1337,9 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[self toggleSpeedLimit: nil];
[GrowlApplicationBridge notifyWithTitle: fSpeedLimitEnabled
? @"Speed Limit Auto Enabled" : @"Speed Limit Auto Disabled"
description: @"Bandwidth settings changed"
? NSLocalizedString(@"Speed Limit Auto Enabled", "Growl notification title")
: NSLocalizedString(@"Speed Limit Auto Disabled", "Growl notification title")
description: NSLocalizedString(@"Bandwidth settings changed", "Growl notification description")
notificationName: GROWL_AUTO_SPEED_LIMIT iconData: nil priority: 0 isSticky: NO clickContext: nil];
}
}
@ -1372,7 +1376,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[limitItem setState: enable ? NSOnState : NSOffState];
[noLimitItem setState: !enable ? NSOnState : NSOffState];
[limitItem setTitle: [NSString stringWithFormat: @"Limit (%d KB/s)",
[limitItem setTitle: [NSString stringWithFormat: NSLocalizedString(@"Limit (%d KB/s)", "Action context menu -> upload/download limit"),
[[dict objectForKey: @"Limit"] intValue]]];
[dict release];
@ -1396,7 +1400,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[fRatioSetItem setState: enable ? NSOnState : NSOffState];
[fRatioNotSetItem setState: !enable ? NSOnState : NSOffState];
[fRatioSetItem setTitle: [NSString stringWithFormat: @"Stop at Ratio (%.2f)",
[fRatioSetItem setTitle: [NSString stringWithFormat: NSLocalizedString(@"Stop at Ratio (%.2f)", "Action context menu -> ratio stop"),
[[dict objectForKey: @"Ratio"] floatValue]]];
[dict release];
@ -1487,7 +1491,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
[sound play];
}
[GrowlApplicationBridge notifyWithTitle: @"Seeding Complete" description: [[notification object] name]
[GrowlApplicationBridge notifyWithTitle: NSLocalizedString(@"Seeding Complete", "Growl notification title") description: [[notification object] name]
notificationName: GROWL_SEEDING_COMPLETE iconData: nil priority: 0 isSticky: NO clickContext: nil];
}
@ -1597,7 +1601,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
//import only actually happened if the torrent array is larger
if (oldCount < [fTorrents count])
[GrowlApplicationBridge notifyWithTitle: @"Torrent File Auto Added" description: file
[GrowlApplicationBridge notifyWithTitle: NSLocalizedString(@"Torrent File Auto Added", "Growl notification title") description: file
notificationName: GROWL_AUTO_ADD iconData: nil priority: 0 isSticky: NO clickContext: nil];
}
}
@ -1912,72 +1916,72 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
if ([ident isEqualToString: TOOLBAR_OPEN])
{
[item setLabel: @"Open"];
[item setPaletteLabel: @"Open Torrent Files"];
[item setToolTip: @"Open torrent files"];
[item setLabel: NSLocalizedString(@"Open", "Open toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Open Torrent Files", "Open toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Open torrent files", "Open toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"Open.png"]];
[item setTarget: self];
[item setAction: @selector(openShowSheet:)];
}
else if ([ident isEqualToString: TOOLBAR_REMOVE])
{
[item setLabel: @"Remove"];
[item setPaletteLabel: @"Remove Selected"];
[item setToolTip: @"Remove selected transfers"];
[item setLabel: NSLocalizedString(@"Remove", "Remove toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Remove Selected", "Remove toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Remove selected transfers", "Remove toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"Remove.png"]];
[item setTarget: self];
[item setAction: @selector(removeNoDelete:)];
}
else if ([ident isEqualToString: TOOLBAR_INFO])
{
[item setLabel: @"Inspector"];
[item setPaletteLabel: @"Toggle Inspector"];
[item setToolTip: @"Toggle the torrent inspector"];
[item setLabel: NSLocalizedString(@"Inspector", "Inspector toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Toggle Inspector", "Inspector toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Toggle the torrent inspector", "Inspector toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"Info.png"]];
[item setTarget: self];
[item setAction: @selector(showInfo:)];
}
else if ([ident isEqualToString: TOOLBAR_PAUSE_ALL])
{
[item setLabel: @"Pause All"];
[item setLabel: NSLocalizedString(@"Pause All", "Pause All toolbar item -> label")];
[item setPaletteLabel: [item label]];
[item setToolTip: @"Pause all transfers"];
[item setToolTip: NSLocalizedString(@"Pause all transfers", "Pause All toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"PauseAll.png"]];
[item setTarget: self];
[item setAction: @selector(stopAllTorrents:)];
}
else if ([ident isEqualToString: TOOLBAR_RESUME_ALL])
{
[item setLabel: @"Resume All"];
[item setLabel: NSLocalizedString(@"Resume All", "Resume All toolbar item -> label")];
[item setPaletteLabel: [item label]];
[item setToolTip: @"Resume all transfers"];
[item setToolTip: NSLocalizedString(@"Resume all transfers", "Resume All toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"ResumeAll.png"]];
[item setTarget: self];
[item setAction: @selector(resumeAllTorrents:)];
}
else if ([ident isEqualToString: TOOLBAR_PAUSE_SELECTED])
{
[item setLabel: @"Pause"];
[item setPaletteLabel: @"Pause Selected"];
[item setToolTip: @"Pause selected transfers"];
[item setLabel: NSLocalizedString(@"Pause", "Pause toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Pause Selected", "Pause toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Pause selected transfers", "Pause toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"PauseSelected.png"]];
[item setTarget: self];
[item setAction: @selector(stopSelectedTorrents:)];
}
else if ([ident isEqualToString: TOOLBAR_RESUME_SELECTED])
{
[item setLabel: @"Resume"];
[item setPaletteLabel: @"Resume Selected"];
[item setToolTip: @"Resume selected transfers"];
[item setLabel: NSLocalizedString(@"Resume", "Resume toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Resume Selected", "Resume toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Resume selected transfers", "Resume toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"ResumeSelected.png"]];
[item setTarget: self];
[item setAction: @selector(resumeSelectedTorrents:)];
}
else if ([ident isEqualToString: TOOLBAR_FILTER])
{
[item setLabel: @"Filter"];
[item setPaletteLabel: @"Toggle Filter"];
[item setToolTip: @"Toggle the filter bar"];
[item setLabel: NSLocalizedString(@"Filter", "Filter toolbar item -> label")];
[item setPaletteLabel: NSLocalizedString(@"Toggle Filter", "Filter toolbar item -> palette label")];
[item setToolTip: NSLocalizedString(@"Toggle the filter bar", "Filter toolbar item -> tooltip")];
[item setImage: [NSImage imageNamed: @"Filter.png"]];
[item setTarget: self];
[item setAction: @selector(toggleFilterBar:)];
@ -2096,7 +2100,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
//enable show info
if (action == @selector(showInfo:))
{
NSString * title = [[fInfoController window] isVisible] ? @"Hide Inspector" : @"Show Inspector";
NSString * title = [[fInfoController window] isVisible] ? NSLocalizedString(@"Hide Inspector", "View menu -> Inspector") : NSLocalizedString(@"Show Inspector", "View menu -> Inspector");
if (![[menuItem title] isEqualToString: title])
[menuItem setTitle: title];
@ -2110,7 +2114,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
//enable toggle status bar
if (action == @selector(toggleStatusBar:))
{
NSString * title = [fStatusBar isHidden] ? @"Show Status Bar" : @"Hide Status Bar";
NSString * title = [fStatusBar isHidden] ? NSLocalizedString(@"Show Status Bar", "View menu -> Status Bar") : NSLocalizedString(@"Hide Status Bar", "View menu -> Status Bar");
if (![[menuItem title] isEqualToString: title])
[menuItem setTitle: title];
@ -2120,7 +2124,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy
//enable toggle filter bar
if (action == @selector(toggleFilterBar:))
{
NSString * title = [fFilterBar isHidden] ? @"Show Filter Bar" : @"Hide Filter Bar";
NSString * title = [fFilterBar isHidden] ? NSLocalizedString(@"Show Filter Bar", "View menu -> Filter Bar") : NSLocalizedString(@"Hide Filter Bar", "View menu -> Filter Bar");
if (![[menuItem title] isEqualToString: title])
[menuItem setTitle: title];

View File

@ -0,0 +1,362 @@
/* Action context menu -> ratio stop */
"Stop at Ratio (%.2f)" = "Stop at Ratio (%.2f)";
/* Action context menu -> upload/download limit
Action context menu -> upload limit
Action context menu -> download limit */
"Limit (%d KB/s)" = "Limit (%d KB/s)";
/* Confirm Quit panel -> button */
"Quit" = "Quit";
/* Confirm Quit panel -> message */
"There are %d active transfers. Do you really want to quit?" = "There are %d active transfers. Do you really want to quit?";
/* Confirm Quit panel -> message */
"There is an active transfer. Do you really want to quit?" = "There is an active transfer. Do you really want to quit?";
/* Confirm Quit panel -> title */
"Confirm Quit" = "Confirm Quit";
/* File size (beware of leading space) */
" GB" = " GB";
/* File size (beware of leading space) */
" KB" = " KB";
/* File size (beware of leading space) */
" MB" = " MB";
/* File size */
"%lld bytes" = "%lld bytes";
/* Filter toolbar item -> label */
"Filter" = "Filter";
/* Filter toolbar item -> palette label */
"Toggle Filter" = "Toggle Filter";
/* Filter toolbar item -> tooltip */
"Toggle the filter bar" = "Toggle the filter bar";
/* Growl notification description */
"Bandwidth settings changed" = "Bandwidth settings changed";
/* Growl notification title */
"Download Complete" = "Download Complete";
/* Growl notification title */
"Seeding Complete" = "Seeding Complete";
/* Growl notification title */
"Speed Limit Auto Disabled" = "Speed Limit Auto Disabled";
/* Growl notification title */
"Speed Limit Auto Enabled" = "Speed Limit Auto Enabled";
/* Growl notification title */
"Torrent File Auto Added" = "Torrent File Auto Added";
/* Inspector -> Activity -> detailed pieces view tooltip */
"Piece Availability" = "Piece Availability";
/* Inspector -> Activity -> detailed pieces view tooltip */
"Piece Progress" = "Piece Progress";
/* Inspector -> Files tab -> bottom text (number of files) */
"%d file" = "%d file";
/* Inspector -> Files tab -> bottom text (number of files) */
"%d files" = "%d files";
/* Inspector -> Files tab -> bottom text (number of files) */
"info not available" = "info not available";
/* Inspector -> Files tab -> table row tooltip */
" bytes" = " bytes";
/* Inspector -> Peers tab -> connected */
"%d (%d incoming)" = "%1$d (%2$d incoming)";
/* Inspector -> Peers tab -> table row tooltip */
"From incoming connection" = "From incoming connection";
/* Inspector -> Peers tab -> table row tooltip */
"From outgoing connection" = "From outgoing connection";
/* Inspector -> above tabs -> selected torrents */
"%d Torrents Selected" = "%d Torrents Selected";
/* Inspector -> above tabs -> selected torrents */
"No Torrents Selected" = "No Torrents Selected";
/* Inspector -> above tabs -> total size (several torrents selected) */
"%@ Total" = "%@ Total";
/* Inspector toolbar item -> label */
"Inspector" = "Inspector";
/* Inspector toolbar item -> palette label */
"Toggle Inspector" = "Toggle Inspector";
/* Inspector toolbar item -> tooltip */
"Toggle the torrent inspector" = "Toggle the torrent inspector";
/* Main window -> 1st bottom left button (action) tooltip */
"Shortcuts for changing global settings." = "Shortcuts for changing global settings.";
/* Main window -> 2nd bottom left button (turtle) tooltip */
"Speed Limit overrides the total bandwidth limits with its own limits." = "Speed Limit overrides the total bandwidth limits with its own limits.";
/* Open toolbar item -> label */
"Open" = "Open";
/* Open toolbar item -> palette label */
"Open Torrent Files" = "Open Torrent Files";
/* Open toolbar item -> tooltip */
"Open torrent files" = "Open torrent files";
/* Open torrent -> select destination folder */
"Select the download folder for \"%@\"" = "Select the download folder for \"%@\"";
/* Pause All toolbar item -> label */
"Pause All" = "Pause All";
/* Pause All toolbar item -> tooltip */
"Pause all transfers" = "Pause all transfers";
/* Pause toolbar item -> label */
"Pause" = "Pause";
/* Pause toolbar item -> palette label */
"Pause Selected" = "Pause Selected";
/* Pause toolbar item -> tooltip */
"Pause selected transfers" = "Pause selected transfers";
/* Preferences -> Bandwidth toolbar item title */
"Bandwidth" = "Bandwidth";
/* Preferences -> General toolbar item title */
"General" = "General";
/* Preferences -> Network -> port map status */
"Error mapping port" = "Error mapping port";
/* Preferences -> Network -> port map status */
"Port successfully mapped" = "Port successfully mapped";
/* Preferences -> Network -> port status */
"Checking port status" = "Checking port status";
/* Preferences -> Network -> port status */
"Port is closed" = "Port is closed";
/* Preferences -> Network -> port status */
"Port is open" = "Port is open";
/* Preferences -> Network -> port status */
"Port is stealth" = "Port is stealth";
/* Preferences -> Network -> port status */
"Unable to check port status" = "Unable to check port status";
/* Preferences -> Network toolbar item title */
"Network" = "Network";
/* Preferences -> Transfers toolbar item title */
"Transfers" = "Transfers";
/* Removal confirm panel -> button
Confirm Quit panel -> button */
"Cancel" = "Cancel";
/* Removal confirm panel -> button
Remove toolbar item -> label */
"Remove" = "Remove";
/* Removal confirm panel -> message */
"This transfer is active. Once removed, continuing the transfer will require the torrent file. Do you really want to remove it?" = "This transfer is active. Once removed, continuing the transfer will require the torrent file. Do you really want to remove it?";
/* Removal confirm panel -> message part 1 */
"There are %d active transfers." = "There are %d active transfers.";
/* Removal confirm panel -> message part 1 */
"There are %d transfers (%d active)." = "There are %1$d transfers (%2$d active).";
/* Removal confirm panel -> message part 2 */
" Once removed, continuing the transfers will require the torrent files. Do you really want to remove them?" = " Once removed, continuing the transfers will require the torrent files. Do you really want to remove them?";
/* Removal confirm panel -> title */
"Comfirm Removal of %d Transfers" = "Comfirm Removal of %d Transfers";
/* Removal confirm panel -> title */
"Comfirm Removal of \"%@\"" = "Comfirm Removal of \"%@\"";
/* Remove toolbar item -> palette label */
"Remove Selected" = "Remove Selected";
/* Remove toolbar item -> tooltip */
"Remove selected transfers" = "Remove selected transfers";
/* Resume All toolbar item -> label */
"Resume All" = "Resume All";
/* Resume All toolbar item -> tooltip */
"Resume all transfers" = "Resume all transfers";
/* Resume toolbar item -> label */
"Resume" = "Resume";
/* Resume toolbar item -> palette label */
"Resume Selected" = "Resume Selected";
/* Resume toolbar item -> tooltip */
"Resume selected transfers" = "Resume selected transfers";
/* Save log alert panel -> button
Torrent file copy alert -> button
Torrent file disk space alert -> button */
"OK" = "OK";
/* Save log alert panel -> message */
"There was a problem creating the file \"%@\"." = "There was a problem creating the file \"%@\".";
/* Save log alert panel -> title */
"Log Could Not Be Saved" = "Log Could Not Be Saved";
/* Save log panel -> default file name */
"untitled" = "untitled";
/* Status bar -> total download */
"Total DL: " = "Total DL: ";
/* Status bar -> total upload */
"Total UL: " = "Total UL: ";
/* Status bar transfer count */
"%d Transfer" = "%d Transfer";
/* Status bar transfer count */
"%d Transfers" = "%d Transfers";
/* Torrent -> location */
"Transmission Support Folder" = "Transmission Support Folder";
/* Torrent -> progress string */
" - %@ remaining" = " - %@ remaining";
/* Torrent -> progress string */
" - remaining time unknown" = " - remaining time unknown";
/* Torrent -> progress string */
"%@ of %@ (%.2f%%)" = "%1$@ of %2$@ (%3$.2f%%)";
/* Torrent -> progress string */
"%@, uploaded %@ (Ratio: %@)" = "%1$@, uploaded %2$@ (Ratio: %3$@)";
/* Torrent -> remaining time */
"%d day %d hr" = "%1$d day %2$d hr";
/* Torrent -> remaining time */
"%d days %d hr" = "%1$d days %2$d hr";
/* Torrent -> remaining time */
"%d hr %02d min" = "%1$d hr %2$d min";
/* Torrent -> remaining time */
"%d min %02d sec" = "%1$d min %2$d sec";
/* Torrent -> remaining time */
"%d sec" = "%d sec";
/* Torrent -> remaining time */
"Unknown" = "Unknown";
/* Torrent -> status string */
"Checking existing files" = "Checking existing files";
/* Torrent -> status string */
"DL: %@, " = "DL: %@, ";
/* Torrent -> status string */
"Downloading" = "Downloading";
/* Torrent -> status string */
"Downloading from %d of %d peer" = "Downloading from %1$d of %2$d peer";
/* Torrent -> status string */
"Downloading from %d of %d peers" = "Downloading from %1$d of %2$d peers";
/* Torrent -> status string */
"Error: " = "Error: ";
/* Torrent -> status string */
"N/A" = "N/A";
/* Torrent -> status string */
"Paused" = "Paused";
/* Torrent -> status string */
"Ratio: " = "Ratio: ";
/* Torrent -> status string */
"Ratio: %@, " = "Ratio: %@, ";
/* Torrent -> status string */
"Seeding" = "Seeding";
/* Torrent -> status string */
"Seeding complete" = "Seeding complete";
/* Torrent -> status string */
"Seeding to %d of %d peer" = "Seeding to %1$d of %2$d peer";
/* Torrent -> status string */
"Seeding to %d of %d peers" = "Seeding to %1$d of %2$d peers";
/* Torrent -> status string */
"Stopping" = "Stopping";
/* Torrent -> status string */
"UL: " = "UL: ";
/* Torrent -> status string */
"Waiting to start" = "Waiting to start";
/* Torrent file copy alert -> message */
"The torrent file (%@) cannot be found." = "The torrent file (%@) cannot be found.";
/* Torrent file copy alert -> title */
"Copy of \"%@\" Cannot Be Created" = "Copy of \"%@\" Cannot Be Created";
/* Torrent file disk space alert -> button */
"Download Anyway" = "Download Anyway";
/* Torrent file disk space alert -> message */
"The transfer will be paused. Clear up space on %@ to continue." = "The transfer will be paused. Clear up space on %@ to continue.";
/* Torrent file disk space alert -> title */
"Not enough remaining disk space to download \"%@\" completely." = "Not enough remaining disk space to download \"%@\" completely.";
/* Transfer speed (Bytes per second) */
"B/s" = "B/s";
/* View menu -> Filter Bar */
"Hide Filter Bar" = "Hide Filter Bar";
/* View menu -> Filter Bar */
"Show Filter Bar" = "Show Filter Bar";
/* View menu -> Inspector */
"Hide Inspector" = "Hide Inspector";
/* View menu -> Inspector */
"Show Inspector" = "Show Inspector";
/* View menu -> Status Bar */
"Hide Status Bar" = "Hide Status Bar";
/* View menu -> Status Bar */
"Show Status Bar" = "Show Status Bar";

View File

@ -122,7 +122,7 @@
{
if (numberSelected > 0)
{
[fNameField setStringValue: [NSString stringWithFormat: @"%d Torrents Selected", numberSelected]];
[fNameField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%d Torrents Selected", "Inspector -> above tabs -> selected torrents"), numberSelected]];
uint64_t size = 0;
NSEnumerator * enumerator = [torrents objectEnumerator];
@ -130,13 +130,13 @@
while ((torrent = [enumerator nextObject]))
size += [torrent size];
[fSizeField setStringValue: [[NSString stringForFileSize: size] stringByAppendingString: @" Total"]];
[fSizeField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%@ Total", "Inspector -> above tabs -> total size (several torrents selected)"), [NSString stringForFileSize: size]]];
}
else
{
[fNameField setStringValue: @"No Torrents Selected"];
[fNameField setStringValue: NSLocalizedString(@"No Torrents Selected", "Inspector -> above tabs -> selected torrents")];
[fSizeField setStringValue: @""];
[fDownloadedValidField setStringValue: @""];
[fDownloadedTotalField setStringValue: @""];
[fUploadedTotalField setStringValue: @""];
@ -241,12 +241,14 @@
NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject]))
[fFiles addObjectsFromArray: [torrent fileList]];
[fFileTableStatusField setStringValue: [NSString stringWithFormat: @"%d file%s", [fFiles count],
[fFiles count] == 1 ? "" : "s"]];
if ([fFiles count] > 1)
[fFileTableStatusField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%d files", "Inspector -> Files tab -> bottom text (number of files)"), [fFiles count]]];
else
[fFileTableStatusField setStringValue: [NSString stringWithFormat: NSLocalizedString(@"%d file", "Inspector -> Files tab -> bottom text (number of files)"), [fFiles count]]];
}
else
[fFileTableStatusField setStringValue: @"info not available"];
[fFileTableStatusField setStringValue: NSLocalizedString(@"info not available", "Inspector -> Files tab -> bottom text (number of files)")];
[fFileTable deselectAll: nil];
[fFileTable reloadData];
@ -311,7 +313,7 @@
[fLeechersField setStringValue: leechers < 0 ? @"" : [NSString stringWithInt: leechers]];
BOOL active = [torrent isActive];
[fConnectedPeersField setStringValue: active ? [NSString stringWithFormat: @"%d (%d incoming)",
[fConnectedPeersField setStringValue: active ? [NSString stringWithFormat: NSLocalizedString(@"%d (%d incoming)", "Inspector -> Peers tab -> connected"),
[torrent totalPeers], [torrent totalPeersIncoming]]: @""];
[fDownloadingFromField setStringValue: active ? [NSString stringWithInt: [torrent peersUploading]] : @""];
[fUploadingToField setStringValue: active ? [NSString stringWithInt: [torrent peersDownloading]] : @""];
@ -525,13 +527,17 @@
{
NSDictionary * file = [fFiles objectAtIndex: row];
if ([[column identifier] isEqualToString: @"Size"])
return [[[file objectForKey: @"Size"] stringValue] stringByAppendingString: @" bytes"];
return [[[file objectForKey: @"Size"] stringValue] stringByAppendingString: NSLocalizedString(@" bytes", "Inspector -> Files tab -> table row tooltip")];
else
return [file objectForKey: @"Name"];
}
else if (tableView == fPeerTable)
return [NSString stringWithFormat: @"From %@ connection",
[[[fPeers objectAtIndex: row] objectForKey: @"Incoming"] boolValue] ? @"incoming" : @"outgoing"];
{
if ([[[fPeers objectAtIndex: row] objectForKey: @"Incoming"] boolValue])
return NSLocalizedString(@"From incoming connection", "Inspector -> Peers tab -> table row tooltip");
else
return NSLocalizedString(@"From outgoing connection", "Inspector -> Peers tab -> table row tooltip");
}
else
return nil;
}

View File

@ -174,7 +174,7 @@
[panel setRequiredFileType: @"txt"];
[panel setCanSelectHiddenExtension: YES];
[panel beginSheetForDirectory: nil file: @"untitled" modalForWindow: [self window] modalDelegate: self
[panel beginSheetForDirectory: nil file: NSLocalizedString(@"untitled", "Save log panel -> default file name") modalForWindow: [self window] modalDelegate: self
didEndSelector: @selector(writeToFileSheetClosed:returnCode:contextInfo:) contextInfo: string];
}
@ -185,10 +185,10 @@
if (![string writeToFile: [panel filename] atomically: YES encoding: NSUTF8StringEncoding error: nil])
{
NSAlert * alert = [[NSAlert alloc] init];
[alert addButtonWithTitle: @"OK"];
[alert setMessageText: [NSString stringWithFormat: @"Log Could Not Be Saved"]];
[alert addButtonWithTitle: NSLocalizedString(@"OK", "Save log alert panel -> button")];
[alert setMessageText: [NSString stringWithFormat: NSLocalizedString(@"Log Could Not Be Saved", "Save log alert panel -> title")]];
[alert setInformativeText: [NSString stringWithFormat:
@"There was a problem creating the file \"%@\".", [[panel filename] lastPathComponent]]];
NSLocalizedString(@"There was a problem creating the file \"%@\".", "Save log alert panel -> message"), [[panel filename] lastPathComponent]]];
[alert setAlertStyle: NSWarningAlertStyle];
[alert runModal];

View File

@ -135,7 +135,8 @@
[fBluePiece unlockFocus];
[fImageView setToolTip: [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"]
? @"Piece Availability" : @"Piece Progress"];
? NSLocalizedString(@"Piece Availability", "Inspector -> Activity -> detailed pieces view tooltip")
: NSLocalizedString(@"Piece Progress", "Inspector -> Activity -> detailed pieces view tooltip")];
//actually draw the box
[self setTorrent: nil];
@ -382,7 +383,8 @@
[defaults setBool: showAvailability forKey: @"PiecesViewShowAvailability"];
[fImageView setToolTip: showAvailability ? @"Piece Availability" : @"Piece Progress"];
[fImageView setToolTip: showAvailability ? NSLocalizedString(@"Piece Availability", "Inspector -> Activity -> detailed pieces view tooltip")
: NSLocalizedString(@"Piece Progress", "Inspector -> Activity -> detailed pieces view tooltip")];
[self updateView: YES];
}

View File

@ -95,8 +95,15 @@
NSArray * nodes = [shieldsUpProbe nodesForXPath: @"/html/body/center/table[3]/tr/td[2]" error: nil];
if ([nodes count] != 1)
{
NSLog(@"Unable to get port status: invalid (outdated) XPath expression");
[self callBackWithStatus: PORT_STATUS_ERROR];
NSArray * title = [shieldsUpProbe nodesForXPath: @"/html/head/title" error: nil];
// This may happen when we probe twice too quickly
if ([title count] > 1 || ![[[title objectAtIndex: 0] stringValue] isEqualToString:
@"NanoProbe System Already In Use"])
{
NSLog(@"Unable to get port status: invalid (outdated) XPath expression");
[[shieldsUpProbe XMLData] writeToFile: @"/tmp/shieldsUpProbe.html" atomically: YES];
[self callBackWithStatus: PORT_STATUS_ERROR];
}
}
else
{

View File

@ -37,10 +37,10 @@
#define UPDATE_WEEKLY 1
#define UPDATE_NEVER 2
#define TOOLBAR_GENERAL @"General"
#define TOOLBAR_TRANSFERS @"Transfers"
#define TOOLBAR_BANDWIDTH @"Bandwidth"
#define TOOLBAR_NETWORK @"Network"
#define TOOLBAR_GENERAL NSLocalizedString(@"General", "Preferences -> General toolbar item title")
#define TOOLBAR_TRANSFERS NSLocalizedString(@"Transfers", "Preferences -> Transfers toolbar item title")
#define TOOLBAR_BANDWIDTH NSLocalizedString(@"Bandwidth", "Preferences -> Bandwidth toolbar item title")
#define TOOLBAR_NETWORK NSLocalizedString(@"Network", "Preferences -> Network toolbar item title")
@interface PrefsController (Private)
@ -377,7 +377,7 @@
//NSXML features are unfortunately only available since Mac OS X v10.4
PortChecker * checker = [[PortChecker alloc] initWithDelegate: self];
[fPortStatusField setStringValue: [@"Checking port status" stringByAppendingEllipsis]];
[fPortStatusField setStringValue: [NSLocalizedString(@"Checking port status", "Preferences -> Network -> port status") stringByAppendingEllipsis]];
[fPortStatusProgress startAnimation: self];
[checker probePort: [fDefaults integerForKey: @"BindPort"]];
@ -390,19 +390,19 @@
switch ([portChecker status])
{
case PORT_STATUS_OPEN:
[fPortStatusField setStringValue: @"Port is open"];
[fPortStatusField setStringValue: NSLocalizedString(@"Port is open", "Preferences -> Network -> port status")];
[fPortStatusImage setImage: [NSImage imageNamed: @"GreenDot.tiff"]];
break;
case PORT_STATUS_STEALTH:
[fPortStatusField setStringValue: @"Port is stealth"];
[fPortStatusField setStringValue: NSLocalizedString(@"Port is stealth", "Preferences -> Network -> port status")];
[fPortStatusImage setImage: [NSImage imageNamed: @"RedDot.tiff"]];
break;
case PORT_STATUS_CLOSED:
[fPortStatusField setStringValue: @"Port is closed"];
[fPortStatusField setStringValue: NSLocalizedString(@"Port is closed", "Preferences -> Network -> port status")];
[fPortStatusImage setImage: [NSImage imageNamed: @"RedDot.tiff"]];
break;
case PORT_STATUS_ERROR:
[fPortStatusField setStringValue: @"Unable to check port status"];
[fPortStatusField setStringValue: NSLocalizedString(@"Unable to check port status", "Preferences -> Network -> port status")];
[fPortStatusImage setImage: [NSImage imageNamed: @"YellowDot.tiff"]];
break;
}
@ -427,12 +427,12 @@
if (status == 2)
{
[fNatStatusField setStringValue: @"Port successfully mapped"];
[fNatStatusField setStringValue: NSLocalizedString(@"Port successfully mapped", "Preferences -> Network -> port map status")];
[fNatStatusImage setImage: [NSImage imageNamed: @"GreenDot.tiff"]];
}
else if (status == 3 || status == 4)
{
[fNatStatusField setStringValue: @"Error mapping port"];
[fNatStatusField setStringValue: NSLocalizedString(@"Error mapping port", "Preferences -> Network -> port map status")];
[fNatStatusImage setImage: [NSImage imageNamed: @"RedDot.tiff"]];
}
else

View File

@ -44,24 +44,24 @@
+ (NSString *) stringForFileSize: (uint64_t) size
{
if (size < 1024)
return [NSString stringWithFormat: @"%lld bytes", size];
return [NSString stringWithFormat: NSLocalizedString(@"%lld bytes", "File size"), size];
float convertedSize = (float) size;
NSString * unit;
if (size < 1048576)
{
convertedSize /= 1024.0;
unit = @" KB";
unit = NSLocalizedString(@" KB", "File size (beware of leading space)");
}
else if (size < 1073741824)
{
convertedSize /= 1048576.0;
unit = @" MB";
unit = NSLocalizedString(@" MB", "File size (beware of leading space)");
}
else
{
convertedSize /= 1073741824.0;
unit = @" GB";
unit = NSLocalizedString(@" GB", "File size (beware of leading space)");
}
NSString * sizeString;
@ -78,7 +78,7 @@
+ (NSString *) stringForSpeed: (float) speed
{
return [[self stringForSpeedAbbrev: speed] stringByAppendingString: @"B/s"];
return [[self stringForSpeedAbbrev: speed] stringByAppendingString: NSLocalizedString(@"B/s", "Transfer speed (Bytes per second)")];
}
+ (NSString *) stringForSpeedAbbrev: (float) speed

View File

@ -193,10 +193,10 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
[fProgressString setString: @""];
if ([self progress] < 1.0)
[fProgressString appendFormat: @"%@ of %@ (%.2f%%)", [NSString stringForFileSize:
[fProgressString appendFormat: NSLocalizedString(@"%@ of %@ (%.2f%%)", "Torrent -> progress string"), [NSString stringForFileSize:
[self downloadedValid]], [NSString stringForFileSize: [self size]], 100.0 * [self progress]];
else
[fProgressString appendFormat: @"%@, uploaded %@ (Ratio: %@)", [NSString stringForFileSize:
[fProgressString appendFormat: NSLocalizedString(@"%@, uploaded %@ (Ratio: %@)", "Torrent -> progress string"), [NSString stringForFileSize:
[self size]], [NSString stringForFileSize: [self uploadedTotal]],
[NSString stringForRatioWithDownload: [self downloadedTotal] upload: [self uploadedTotal]]];
@ -206,11 +206,11 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
case TR_STATUS_PAUSE:
if (fFinishedSeeding)
tempString = @"Seeding complete";
tempString = NSLocalizedString(@"Seeding complete", "Torrent -> status string");
else if (fWaitToStart)
tempString = [@"Waiting to start" stringByAppendingEllipsis];
tempString = [NSLocalizedString(@"Waiting to start", "Torrent -> status string") stringByAppendingEllipsis];
else
tempString = @"Paused";
tempString = NSLocalizedString(@"Paused", "Torrent -> status string");
[fStatusString setString: tempString];
[fShortStatusString setString: tempString];
@ -218,7 +218,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
break;
case TR_STATUS_CHECK:
tempString = [@"Checking existing files" stringByAppendingEllipsis];
tempString = [NSLocalizedString(@"Checking existing files", "Torrent -> status string") stringByAppendingEllipsis];
[fStatusString setString: tempString];
[fShortStatusString setString: tempString];
@ -228,44 +228,52 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
case TR_STATUS_DOWNLOAD:
[fStatusString setString: @""];
[fStatusString appendFormat:
@"Downloading from %d of %d peer%s", [self peersUploading], [self totalPeers],
[self totalPeers] == 1 ? "" : "s"];
if ([self totalPeers] > 1)
[fStatusString appendFormat: NSLocalizedString(@"Downloading from %d of %d peers", "Torrent -> status string"), [self peersUploading], [self totalPeers]];
else
[fStatusString appendFormat: NSLocalizedString(@"Downloading from %d of %d peer", "Torrent -> status string"), [self peersUploading], [self totalPeers]];
[fRemainingTimeString setString: @""];
int eta = [self eta];
if (eta < 0)
{
[fRemainingTimeString setString: @"Unknown"];
[fProgressString appendString: @" - remaining time unknown"];
[fRemainingTimeString setString: NSLocalizedString(@"Unknown", "Torrent -> remaining time")];
[fProgressString appendString: NSLocalizedString(@" - remaining time unknown", "Torrent -> progress string")];
}
else
{
if (eta < 60)
[fRemainingTimeString appendFormat: @"%d sec", eta];
[fRemainingTimeString appendFormat: NSLocalizedString(@"%d sec", "Torrent -> remaining time"), eta];
else if (eta < 3600) //60 * 60
[fRemainingTimeString appendFormat: @"%d min %02d sec", eta / 60, eta % 60];
[fRemainingTimeString appendFormat: NSLocalizedString(@"%d min %02d sec", "Torrent -> remaining time"), eta / 60, eta % 60];
else if (eta < 86400) //24 * 60 * 60
[fRemainingTimeString appendFormat: @"%d hr %02d min", eta / 3600, (eta / 60) % 60];
[fRemainingTimeString appendFormat: NSLocalizedString(@"%d hr %02d min", "Torrent -> remaining time"), eta / 3600, (eta / 60) % 60];
else
[fRemainingTimeString appendFormat: @"%d day%s %d hr",
eta / 86400, eta / 86400 == 1 ? "" : "s", (eta / 3600) % 24];
{
if (eta / 86400 > 1)
[fRemainingTimeString appendFormat: NSLocalizedString(@"%d days %d hr", "Torrent -> remaining time"),
eta / 86400, (eta / 3600) % 24];
else
[fRemainingTimeString appendFormat: NSLocalizedString(@"%d day %d hr", "Torrent -> remaining time"),
eta / 86400, (eta / 3600) % 24];
}
[fProgressString appendFormat: @" - %@ remaining", fRemainingTimeString];
[fProgressString appendFormat: NSLocalizedString(@" - %@ remaining", "Torrent -> progress string"), fRemainingTimeString];
}
break;
case TR_STATUS_SEED:
[fStatusString setString: @""];
[fStatusString appendFormat:
@"Seeding to %d of %d peer%s",
[self peersDownloading], [self totalPeers], [self totalPeers] == 1 ? "" : "s"];
if ([self totalPeers] > 1)
[fStatusString appendFormat: NSLocalizedString(@"Seeding to %d of %d peers", "Torrent -> status string"), [self peersDownloading], [self totalPeers]];
else
[fStatusString appendFormat: NSLocalizedString(@"Seeding to %d of %d peer", "Torrent -> status string"), [self peersDownloading], [self totalPeers]];
break;
case TR_STATUS_STOPPING:
tempString = [@"Stopping" stringByAppendingEllipsis];
tempString = [NSLocalizedString(@"Stopping", "Torrent -> status string") stringByAppendingEllipsis];
[fStatusString setString: tempString];
[fShortStatusString setString: tempString];
@ -275,7 +283,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
if (fStat->error & TR_ETRACKER)
{
[fStatusString setString: [@"Error: " stringByAppendingString: [NSString stringWithUTF8String: fStat->trackerError]]];
[fStatusString setString: [NSLocalizedString(@"Error: ", "Torrent -> status string") stringByAppendingString: [NSString stringWithUTF8String: fStat->trackerError]]];
if (!fError && [self isActive])
{
fError = YES;
@ -294,7 +302,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
NSString * stringToAppend = @"";
if ([self progress] < 1.0)
{
stringToAppend = [NSString stringWithFormat: @"DL: %@, ", [NSString stringForSpeed: [self downloadRate]]];
stringToAppend = [NSString stringWithFormat: NSLocalizedString(@"DL: %@, ", "Torrent -> status string"), [NSString stringForSpeed: [self downloadRate]]];
[fShortStatusString setString: @""];
}
else
@ -302,11 +310,11 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
NSString * ratioString = [NSString stringForRatioWithDownload: [self downloadedTotal]
upload: [self uploadedTotal]];
[fShortStatusString setString: [NSString stringWithFormat: @"Ratio: %@, ", ratioString]];
[fRemainingTimeString setString: [@"Ratio: " stringByAppendingString: ratioString]];
[fShortStatusString setString: [NSString stringWithFormat: NSLocalizedString(@"Ratio: %@, ", "Torrent -> status string"), ratioString]];
[fRemainingTimeString setString: [NSLocalizedString(@"Ratio: ", "Torrent -> status string") stringByAppendingString: ratioString]];
}
stringToAppend = [stringToAppend stringByAppendingString: [@"UL: " stringByAppendingString:
stringToAppend = [stringToAppend stringByAppendingString: [NSLocalizedString(@"UL: ", "Torrent -> status string") stringByAppendingString:
[NSString stringForSpeed: [self uploadRate]]]];
[fStatusString appendFormat: @" - %@", stringToAppend];
@ -467,12 +475,12 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
if (volume && remainingSpace <= torrentRemaining)
{
NSAlert * alert = [[NSAlert alloc] init];
[alert setMessageText: [NSString stringWithFormat: @"Not enough remaining disk space to download \"%@\" completely.",
[alert setMessageText: [NSString stringWithFormat: NSLocalizedString(@"Not enough remaining disk space to download \"%@\" completely.", "Torrent file disk space alert -> title"),
[self name]]];
[alert setInformativeText: [NSString stringWithFormat:
@"The transfer will be paused. Clear up space on %@ to continue.", volume]];
[alert addButtonWithTitle: @"OK"];
[alert addButtonWithTitle: @"Download Anyway"];
NSLocalizedString(@"The transfer will be paused. Clear up space on %@ to continue.", "Torrent file disk space alert -> message"), volume]];
[alert addButtonWithTitle: NSLocalizedString(@"OK", "Torrent file disk space alert -> button")];
[alert addButtonWithTitle: NSLocalizedString(@"Download Anyway", "Torrent file disk space alert -> button")];
if ([alert runModal] == NSAlertFirstButtonReturn)
{
@ -547,7 +555,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
- (NSString *) torrentLocationString
{
return fPrivateTorrent ? @"Transmission Support Folder" : [fPublicTorrentLocation stringByAbbreviatingWithTildeInPath];
return fPrivateTorrent ? NSLocalizedString(@"Transmission Support Folder", "Torrent -> location") : [fPublicTorrentLocation stringByAbbreviatingWithTildeInPath];
}
- (NSString *) dataLocation
@ -570,27 +578,27 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80
switch( fStat->status )
{
case TR_STATUS_PAUSE:
return @"Paused";
return NSLocalizedString(@"Paused", "Torrent -> status string");
break;
case TR_STATUS_CHECK:
return [@"Checking existing files" stringByAppendingEllipsis];
return [NSLocalizedString(@"Checking existing files", "Torrent -> status string") stringByAppendingEllipsis];
break;
case TR_STATUS_DOWNLOAD:
return @"Downloading";
return NSLocalizedString(@"Downloading", "Torrent -> status string");
break;
case TR_STATUS_SEED:
return @"Seeding";
return NSLocalizedString(@"Seeding", "Torrent -> status string");
break;
case TR_STATUS_STOPPING:
return [@"Stopping" stringByAppendingEllipsis];
return [NSLocalizedString(@"Stopping", "Torrent -> status string") stringByAppendingEllipsis];
break;
default:
return @"N/A";
return NSLocalizedString(@"N/A", "Torrent -> status string");
}
}