aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Deckner <alexandre.deckner@uzzl.com>2012-07-12 00:44:17 +0200
committerAlexandre Deckner <alexandre.deckner@uzzl.com>2012-07-12 00:47:46 +0200
commit2218c029a5ab7260d03036b43c68475e0b35b449 (patch)
tree9f28df6751cbe2fdf7fe80e921c605e7bd63bcd3
parentf190d7d580c2aaae3646aed087c6245671e402bd (diff)
Add localization support to WebPositive, patch by Humdingerhrev44315
* Includes style fixes * Functional fixes by myself, patch wouldn't build
-rw-r--r--src/apps/webpositive/AuthenticationPanel.cpp143
-rw-r--r--src/apps/webpositive/BrowserApp.cpp44
-rw-r--r--src/apps/webpositive/BrowserWindow.cpp249
-rw-r--r--src/apps/webpositive/DownloadProgressView.cpp91
-rw-r--r--src/apps/webpositive/DownloadWindow.cpp38
-rw-r--r--src/apps/webpositive/URLInputGroup.cpp22
6 files changed, 343 insertions, 244 deletions
diff --git a/src/apps/webpositive/AuthenticationPanel.cpp b/src/apps/webpositive/AuthenticationPanel.cpp
index 7dcc55260f..a6db7ecad7 100644
--- a/src/apps/webpositive/AuthenticationPanel.cpp
+++ b/src/apps/webpositive/AuthenticationPanel.cpp
@@ -28,10 +28,12 @@
#include "AuthenticationPanel.h"
#include <Button.h>
+#include <Catalog.h>
#include <CheckBox.h>
#include <ControlLook.h>
#include <GridLayoutBuilder.h>
#include <GroupLayoutBuilder.h>
+#include <Locale.h>
#include <Message.h>
#include <Screen.h>
#include <SeparatorView.h>
@@ -44,28 +46,41 @@ static const uint32 kMsgPanelOK = 'pnok';
static const uint32 kMsgJitter = 'jitr';
static const uint32 kHidePassword = 'hdpw';
+
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "Authentication Panel"
+
AuthenticationPanel::AuthenticationPanel(BRect parentFrame)
- : BWindow(BRect(-1000, -1000, -900, -900), "Authentication Required",
- B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
- B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE | B_NOT_ZOOMABLE
- | B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS)
- , m_parentWindowFrame(parentFrame)
- , m_usernameTextControl(new BTextControl("user", "Username:", "", NULL))
- , m_passwordTextControl(new BTextControl("pass", "Password:", "", NULL))
- , m_hidePasswordCheckBox(new BCheckBox("hide", "Hide password text", new BMessage(kHidePassword)))
- , m_rememberCredentialsCheckBox(new BCheckBox("remember", "Remember username and password for this site", NULL))
- , m_okButton(new BButton("ok", "OK", new BMessage(kMsgPanelOK)))
- , m_cancelButton(new BButton("cancel", "Cancel", new BMessage(B_QUIT_REQUESTED)))
- , m_cancelled(false)
- , m_exitSemaphore(create_sem(0, "Authentication Panel"))
+ :
+ BWindow(BRect(-1000, -1000, -900, -900),
+ B_TRANSLATE("Authentication Required"), B_TITLED_WINDOW_LOOK,
+ B_MODAL_APP_WINDOW_FEEL, B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE
+ | B_NOT_ZOOMABLE | B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS),
+ m_parentWindowFrame(parentFrame),
+ m_usernameTextControl(new BTextControl("user", B_TRANSLATE("Username:"),
+ "", NULL)),
+ m_passwordTextControl(new BTextControl("pass", B_TRANSLATE("Password:"),
+ "", NULL)),
+ m_hidePasswordCheckBox(new BCheckBox("hide", B_TRANSLATE("Hide password "
+ "text"), new BMessage(kHidePassword))),
+ m_rememberCredentialsCheckBox(new BCheckBox("remember",
+ B_TRANSLATE("Remember username and password for this site"), NULL)),
+ m_okButton(new BButton("ok", B_TRANSLATE("OK"),
+ new BMessage(kMsgPanelOK))),
+ m_cancelButton(new BButton("cancel", B_TRANSLATE("Cancel"),
+ new BMessage(B_QUIT_REQUESTED))),
+ m_cancelled(false),
+ m_exitSemaphore(create_sem(0, "Authentication Panel"))
{
}
+
AuthenticationPanel::~AuthenticationPanel()
{
delete_sem(m_exitSemaphore);
}
+
bool
AuthenticationPanel::QuitRequested()
{
@@ -74,6 +89,7 @@ AuthenticationPanel::QuitRequested()
return false;
}
+
void
AuthenticationPanel::MessageReceived(BMessage* message)
{
@@ -81,21 +97,23 @@ AuthenticationPanel::MessageReceived(BMessage* message)
case kMsgPanelOK:
release_sem(m_exitSemaphore);
break;
- case kHidePassword: {
- // TODO: Toggling this is broken in BTextView. Workaround is to
- // set the text and selection again.
- BString text = m_passwordTextControl->Text();
- int32 selectionStart;
- int32 selectionEnd;
- m_passwordTextControl->TextView()->GetSelection(&selectionStart, &selectionEnd);
+ case kHidePassword: {
+ // TODO: Toggling this is broken in BTextView. Workaround is to
+ // set the text and selection again.
+ BString text = m_passwordTextControl->Text();
+ int32 selectionStart;
+ int32 selectionEnd;
+ m_passwordTextControl->TextView()->GetSelection(&selectionStart,
+ &selectionEnd);
m_passwordTextControl->TextView()->HideTyping(
- m_hidePasswordCheckBox->Value() == B_CONTROL_ON);
- m_passwordTextControl->SetText(text.String());
- m_passwordTextControl->TextView()->Select(selectionStart, selectionEnd);
- break;
- }
- case kMsgJitter: {
- UpdateIfNeeded();
+ m_hidePasswordCheckBox->Value() == B_CONTROL_ON);
+ m_passwordTextControl->SetText(text.String());
+ m_passwordTextControl->TextView()->Select(selectionStart,
+ selectionEnd);
+ break;
+ }
+ case kMsgJitter: {
+ UpdateIfNeeded();
BPoint leftTop = Frame().LeftTop();
const float jitterOffsets[] = { -10, 0, 10, 0 };
const int32 jitterOffsetCount = sizeof(jitterOffsets) / sizeof(float);
@@ -106,14 +124,15 @@ AuthenticationPanel::MessageReceived(BMessage* message)
}
MoveTo(leftTop);
break;
- }
+ }
default:
BWindow::MessageReceived(message);
}
}
+
bool AuthenticationPanel::getAuthentication(const BString& text,
- const BString& previousUser, const BString& previousPass,
+ const BString& previousUser, const BString& previousPass,
bool previousRememberCredentials, bool badPassword,
BString& user, BString& pass, bool* rememberCredentials)
{
@@ -121,17 +140,18 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
rgb_color infoColor = ui_color(B_PANEL_TEXT_COLOR);
BRect textBounds(0, 0, 250, 200);
BTextView* textView = new BTextView(textBounds, "text", textBounds,
- be_plain_font, &infoColor, B_FOLLOW_NONE, B_WILL_DRAW | B_SUPPORTS_LAYOUT);
+ be_plain_font, &infoColor, B_FOLLOW_NONE, B_WILL_DRAW
+ | B_SUPPORTS_LAYOUT);
textView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
textView->SetText(text.String());
textView->MakeEditable(false);
textView->MakeSelectable(false);
- m_usernameTextControl->SetText(previousUser.String());
+ m_usernameTextControl->SetText(previousUser.String());
m_passwordTextControl->TextView()->HideTyping(true);
// Ignore the previous password, if it didn't work.
if (!badPassword)
- m_passwordTextControl->SetText(previousPass.String());
+ m_passwordTextControl->SetText(previousPass.String());
m_hidePasswordCheckBox->SetValue(B_CONTROL_ON);
m_rememberCredentialsCheckBox->SetValue(previousRememberCredentials);
@@ -139,24 +159,24 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
SetLayout(new BGroupLayout(B_VERTICAL, 0.0));
float spacing = be_control_look->DefaultItemSpacing();
AddChild(BGroupLayoutBuilder(B_VERTICAL, 0.0)
- .Add(BGridLayoutBuilder(0, spacing)
- .Add(textView, 0, 0, 2)
- .Add(m_usernameTextControl->CreateLabelLayoutItem(), 0, 1)
- .Add(m_usernameTextControl->CreateTextViewLayoutItem(), 1, 1)
- .Add(m_passwordTextControl->CreateLabelLayoutItem(), 0, 2)
- .Add(m_passwordTextControl->CreateTextViewLayoutItem(), 1, 2)
- .Add(BSpaceLayoutItem::CreateGlue(), 0, 3)
- .Add(m_hidePasswordCheckBox, 1, 3)
- .Add(m_rememberCredentialsCheckBox, 0, 4, 2)
- .SetInsets(spacing, spacing, spacing, spacing)
- )
- .Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
- .Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing)
- .AddGlue()
- .Add(m_cancelButton)
- .Add(m_okButton)
- .SetInsets(spacing, spacing, spacing, spacing)
- )
+ .Add(BGridLayoutBuilder(0, spacing)
+ .Add(textView, 0, 0, 2)
+ .Add(m_usernameTextControl->CreateLabelLayoutItem(), 0, 1)
+ .Add(m_usernameTextControl->CreateTextViewLayoutItem(), 1, 1)
+ .Add(m_passwordTextControl->CreateLabelLayoutItem(), 0, 2)
+ .Add(m_passwordTextControl->CreateTextViewLayoutItem(), 1, 2)
+ .Add(BSpaceLayoutItem::CreateGlue(), 0, 3)
+ .Add(m_hidePasswordCheckBox, 1, 3)
+ .Add(m_rememberCredentialsCheckBox, 0, 4, 2)
+ .SetInsets(spacing, spacing, spacing, spacing)
+ )
+ .Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
+ .Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing)
+ .AddGlue()
+ .Add(m_cancelButton)
+ .Add(m_okButton)
+ .SetInsets(spacing, spacing, spacing, spacing)
+ )
);
float textHeight = textView->LineHeight(0) * textView->CountLines();
@@ -164,14 +184,14 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
SetDefaultButton(m_okButton);
if (badPassword && previousUser.Length())
- m_passwordTextControl->MakeFocus(true);
+ m_passwordTextControl->MakeFocus(true);
else
- m_usernameTextControl->MakeFocus(true);
+ m_usernameTextControl->MakeFocus(true);
- if (m_parentWindowFrame.IsValid())
- CenterIn(m_parentWindowFrame);
- else
- CenterOnScreen();
+ if (m_parentWindowFrame.IsValid())
+ CenterIn(m_parentWindowFrame);
+ else
+ CenterOnScreen();
// Start AuthenticationPanel window thread
Show();
@@ -182,12 +202,14 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
// Block calling thread
// Get the originating window, if it exists, to let it redraw itself.
- BWindow* window = dynamic_cast<BWindow*>(BLooper::LooperForThread(find_thread(NULL)));
+ BWindow* window = dynamic_cast<BWindow*>
+ (BLooper::LooperForThread(find_thread(NULL)));
if (window) {
status_t err;
for (;;) {
do {
- err = acquire_sem_etc(m_exitSemaphore, 1, B_RELATIVE_TIMEOUT, 10000);
+ err = acquire_sem_etc(m_exitSemaphore, 1, B_RELATIVE_TIMEOUT,
+ 10000);
// We've (probably) had our time slice taken away from us
} while (err == B_INTERRUPTED);
@@ -209,9 +231,10 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
user = m_usernameTextControl->Text();
pass = m_passwordTextControl->Text();
if (rememberCredentials)
- *rememberCredentials = m_rememberCredentialsCheckBox->Value() == B_CONTROL_ON;
+ *rememberCredentials = m_rememberCredentialsCheckBox->Value()
+ == B_CONTROL_ON;
- bool canceled = m_cancelled;
+ bool canceled = m_cancelled;
Quit();
// AuthenticationPanel object is TOAST here.
return !canceled;
diff --git a/src/apps/webpositive/BrowserApp.cpp b/src/apps/webpositive/BrowserApp.cpp
index ce0082a990..c4291675ff 100644
--- a/src/apps/webpositive/BrowserApp.cpp
+++ b/src/apps/webpositive/BrowserApp.cpp
@@ -28,6 +28,19 @@
#include "BrowserApp.h"
+#include <Alert.h>
+#include <Autolock.h>
+#include <Catalog.h>
+#include <Directory.h>
+#include <Entry.h>
+#include <FindDirectory.h>
+#include <Locale.h>
+#include <Path.h>
+#include <Screen.h>
+#include <debugger.h>
+
+#include <stdio.h>
+
#include "BrowserWindow.h"
#include "BrowsingHistory.h"
#include "DownloadWindow.h"
@@ -39,20 +52,13 @@
#include "WebPage.h"
#include "WebSettings.h"
#include "WebView.h"
-#include <Alert.h>
-#include <Autolock.h>
-#include <Directory.h>
-#include <Entry.h>
-#include <FindDirectory.h>
-#include <Locale.h>
-#include <Path.h>
-#include <Screen.h>
-#include <debugger.h>
-#include <stdio.h>
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "WebPositive"
+
const char* kApplicationSignature = "application/x-vnd.Haiku-WebPositive";
-const char* kApplicationName = "WebPositive";
+const char* kApplicationName = B_TRANSLATE_SYSTEM_NAME("WebPositive");
static const uint32 PRELOAD_BROWSING_HISTORY = 'plbh';
#define ENABLE_NATIVE_COOKIES 0
@@ -174,8 +180,10 @@ BrowserApp::ReadyToRun()
float borderWidth = 0;
if (decoratorSettings.FindFloat("border width", &borderWidth) != B_OK)
borderWidth = 5;
- fDownloadWindow->MoveTo(screenFrame.Width() - fDownloadWindow->Frame().Width() - borderWidth,
- screenFrame.Height() - fDownloadWindow->Frame().Height() - borderWidth);
+ fDownloadWindow->MoveTo(screenFrame.Width()
+ - fDownloadWindow->Frame().Width() - borderWidth,
+ screenFrame.Height() - fDownloadWindow->Frame().Height()
+ - borderWidth);
}
fSettingsWindow = new SettingsWindow(settingsWindowFrame, fSettings);
@@ -217,7 +225,8 @@ BrowserApp::MessageReceived(BMessage* message)
}
case NEW_TAB: {
BrowserWindow* window;
- if (message->FindPointer("window", reinterpret_cast<void**>(&window)) != B_OK)
+ if (message->FindPointer("window",
+ reinterpret_cast<void**>(&window)) != B_OK)
break;
BString url;
message->FindString("url", &url);
@@ -268,9 +277,10 @@ bool
BrowserApp::QuitRequested()
{
if (fDownloadWindow->DownloadsInProgress()) {
- BAlert* alert = new BAlert("Downloads in progress",
- "There are still downloads in progress, do you really want to "
- "quit WebPositive now?", "Quit", "Continue downloads");
+ BAlert* alert = new BAlert(B_TRANSLATE("Downloads in progress"),
+ B_TRANSLATE("There are still downloads in progress, do you really "
+ "want to quit WebPositive now?"), B_TRANSLATE("Quit"),
+ B_TRANSLATE("Continue downloads"));
int32 choice = alert->Go();
if (choice == 1) {
if (fWindowCount == 0) {
diff --git a/src/apps/webpositive/BrowserWindow.cpp b/src/apps/webpositive/BrowserWindow.cpp
index 4987ea7f40..85fb8d1d25 100644
--- a/src/apps/webpositive/BrowserWindow.cpp
+++ b/src/apps/webpositive/BrowserWindow.cpp
@@ -32,26 +32,11 @@
#include "BrowserWindow.h"
-#include "AuthenticationPanel.h"
-#include "BaseURL.h"
-#include "BitmapButton.h"
-#include "BrowserApp.h"
-#include "BrowsingHistory.h"
-#include "CredentialsStorage.h"
-#include "IconButton.h"
-#include "NavMenu.h"
-#include "SettingsKeys.h"
-#include "SettingsMessage.h"
-#include "TabManager.h"
-#include "URLInputGroup.h"
-#include "WebPage.h"
-#include "WebView.h"
-#include "WebViewConstants.h"
-#include "WindowIcon.h"
#include <Alert.h>
#include <Application.h>
#include <Bitmap.h>
#include <Button.h>
+#include <Catalog.h>
#include <CheckBox.h>
#include <Clipboard.h>
#include <Directory.h>
@@ -62,6 +47,7 @@
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <LayoutBuilder.h>
+#include <Locale.h>
#include <MenuBar.h>
#include <MenuItem.h>
#include <MessageRunner.h>
@@ -77,6 +63,26 @@
#include <stdio.h>
+#include "AuthenticationPanel.h"
+#include "BaseURL.h"
+#include "BitmapButton.h"
+#include "BrowserApp.h"
+#include "BrowsingHistory.h"
+#include "CredentialsStorage.h"
+#include "IconButton.h"
+#include "NavMenu.h"
+#include "SettingsKeys.h"
+#include "SettingsMessage.h"
+#include "TabManager.h"
+#include "URLInputGroup.h"
+#include "WebPage.h"
+#include "WebView.h"
+#include "WebViewConstants.h"
+#include "WindowIcon.h"
+
+
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "WebPositive Window"
enum {
OPEN_LOCATION = 'open',
@@ -148,9 +154,9 @@ public:
private:
void _AddStaticItems()
{
- AddItem(new BMenuItem("Manage bookmarks",
+ AddItem(new BMenuItem(B_TRANSLATE("Manage bookmarks"),
new BMessage(SHOW_BOOKMARKS), 'M'), 0);
- AddItem(new BMenuItem("Bookmark this page",
+ AddItem(new BMenuItem(B_TRANSLATE("Bookmark this page"),
new BMessage(CREATE_BOOKMARK), 'B'), 0);
}
};
@@ -281,82 +287,88 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
#else
BMenu* mainMenu = new BMenuBar("Main menu");
#endif
- BMenu* menu = new BMenu("Window");
+ BMenu* menu = new BMenu(B_TRANSLATE("Window"));
BMessage* newWindowMessage = new BMessage(NEW_WINDOW);
newWindowMessage->AddString("url", "");
- BMenuItem* newItem = new BMenuItem("New window", newWindowMessage, 'N');
+ BMenuItem* newItem = new BMenuItem(B_TRANSLATE("New window"),
+ newWindowMessage, 'N');
menu->AddItem(newItem);
newItem->SetTarget(be_app);
- newItem = new BMenuItem("New tab", new BMessage(*newTabMessage), 'T');
+ newItem = new BMenuItem(B_TRANSLATE("New tab"),
+ new BMessage(*newTabMessage), 'T');
menu->AddItem(newItem);
newItem->SetTarget(be_app);
- menu->AddItem(new BMenuItem("Open location", new BMessage(OPEN_LOCATION),
- 'L'));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Open location"),
+ new BMessage(OPEN_LOCATION), 'L'));
menu->AddSeparatorItem();
- menu->AddItem(new BMenuItem("Close window", new BMessage(B_QUIT_REQUESTED),
- 'W', B_SHIFT_KEY));
- menu->AddItem(new BMenuItem("Close tab", new BMessage(CLOSE_TAB), 'W'));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Close window"),
+ new BMessage(B_QUIT_REQUESTED), 'W', B_SHIFT_KEY));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Close tab"),
+ new BMessage(CLOSE_TAB), 'W'));
menu->AddSeparatorItem();
- menu->AddItem(new BMenuItem("Downloads",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Downloads"),
new BMessage(SHOW_DOWNLOAD_WINDOW), 'D'));
- menu->AddItem(new BMenuItem("Settings",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Settings"),
new BMessage(SHOW_SETTINGS_WINDOW)));
- BMenuItem* aboutItem = new BMenuItem("About",
+ BMenuItem* aboutItem = new BMenuItem(B_TRANSLATE("About"),
new BMessage(B_ABOUT_REQUESTED));
menu->AddItem(aboutItem);
aboutItem->SetTarget(be_app);
menu->AddSeparatorItem();
- BMenuItem* quitItem = new BMenuItem("Quit",
+ BMenuItem* quitItem = new BMenuItem(B_TRANSLATE("Quit"),
new BMessage(B_QUIT_REQUESTED), 'Q');
menu->AddItem(quitItem);
quitItem->SetTarget(be_app);
mainMenu->AddItem(menu);
- menu = new BMenu("Edit");
- menu->AddItem(fCutMenuItem = new BMenuItem("Cut", new BMessage(B_CUT),
- 'X'));
- menu->AddItem(fCopyMenuItem = new BMenuItem("Copy", new BMessage(B_COPY),
- 'C'));
- menu->AddItem(fPasteMenuItem = new BMenuItem("Paste", new BMessage(B_PASTE),
- 'V'));
+ menu = new BMenu(B_TRANSLATE("Edit"));
+ menu->AddItem(fCutMenuItem = new BMenuItem(B_TRANSLATE("Cut"),
+ new BMessage(B_CUT), 'X'));
+ menu->AddItem(fCopyMenuItem = new BMenuItem(B_TRANSLATE("Copy"),
+ new BMessage(B_COPY), 'C'));
+ menu->AddItem(fPasteMenuItem = new BMenuItem(B_TRANSLATE("Paste"),
+ new BMessage(B_PASTE), 'V'));
menu->AddSeparatorItem();
- menu->AddItem(new BMenuItem("Find", new BMessage(EDIT_SHOW_FIND_GROUP),
- 'F'));
- menu->AddItem(fFindPreviousMenuItem = new BMenuItem("Find previous",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Find"),
+ new BMessage(EDIT_SHOW_FIND_GROUP), 'F'));
+ menu->AddItem(fFindPreviousMenuItem
+ = new BMenuItem(B_TRANSLATE("Find previous"),
new BMessage(EDIT_FIND_PREVIOUS), 'G', B_SHIFT_KEY));
- menu->AddItem(fFindNextMenuItem = new BMenuItem("Find next",
+ menu->AddItem(fFindNextMenuItem = new BMenuItem(B_TRANSLATE("Find next"),
new BMessage(EDIT_FIND_NEXT), 'G'));
mainMenu->AddItem(menu);
fFindPreviousMenuItem->SetEnabled(false);
fFindNextMenuItem->SetEnabled(false);
- menu = new BMenu("View");
- menu->AddItem(new BMenuItem("Reload", new BMessage(RELOAD), 'R'));
+ menu = new BMenu(B_TRANSLATE("View"));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Reload"), new BMessage(RELOAD),
+ 'R'));
menu->AddSeparatorItem();
- menu->AddItem(new BMenuItem("Increase size",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Increase size"),
new BMessage(ZOOM_FACTOR_INCREASE), '+'));
- menu->AddItem(new BMenuItem("Decrease size",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Decrease size"),
new BMessage(ZOOM_FACTOR_DECREASE), '-'));
- menu->AddItem(new BMenuItem("Reset size",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Reset size"),
new BMessage(ZOOM_FACTOR_RESET), '0'));
- fZoomTextOnlyMenuItem = new BMenuItem("Zoom text only",
+ fZoomTextOnlyMenuItem = new BMenuItem(B_TRANSLATE("Zoom text only"),
new BMessage(ZOOM_TEXT_ONLY));
fZoomTextOnlyMenuItem->SetMarked(fZoomTextOnly);
menu->AddItem(fZoomTextOnlyMenuItem);
menu->AddSeparatorItem();
- fFullscreenItem = new BMenuItem("Fullscreen",
+ fFullscreenItem = new BMenuItem(B_TRANSLATE("Fullscreen"),
new BMessage(TOGGLE_FULLSCREEN), B_RETURN);
menu->AddItem(fFullscreenItem);
- menu->AddItem(new BMenuItem("Page source",
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Page source"),
new BMessage(SHOW_PAGE_SOURCE), 'U'));
mainMenu->AddItem(menu);
- fHistoryMenu = new BMenu("History");
- fHistoryMenu->AddItem(fBackMenuItem = new BMenuItem("Back",
+ fHistoryMenu = new BMenu(B_TRANSLATE("History"));
+ fHistoryMenu->AddItem(fBackMenuItem = new BMenuItem(B_TRANSLATE("Back"),
new BMessage(GO_BACK), B_LEFT_ARROW));
- fHistoryMenu->AddItem(fForwardMenuItem = new BMenuItem("Forward",
- new BMessage(GO_FORWARD), B_RIGHT_ARROW));
+ fHistoryMenu->AddItem(fForwardMenuItem
+ = new BMenuItem(B_TRANSLATE("Forward"), new BMessage(GO_FORWARD),
+ B_RIGHT_ARROW));
fHistoryMenu->AddSeparatorItem();
fHistoryMenuFixedItemCount = fHistoryMenu->CountItems();
mainMenu->AddItem(fHistoryMenu);
@@ -366,7 +378,7 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
if (_BookmarkPath(bookmarkPath) == B_OK
&& get_ref_for_path(bookmarkPath.Path(), &bookmarkRef) == B_OK) {
BMenu* bookmarkMenu
- = new BookmarkMenu("Bookmarks", this, &bookmarkRef);
+ = new BookmarkMenu(B_TRANSLATE("Bookmarks"), this, &bookmarkRef);
mainMenu->AddItem(bookmarkMenu);
}
@@ -412,15 +424,16 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
const float kElementSpacing = 5;
// Find group
- fFindTextControl = new BTextControl("find", "Find:", "",
+ fFindTextControl = new BTextControl("find", B_TRANSLATE("Find:"), "",
new BMessage(EDIT_FIND_NEXT));
fFindTextControl->SetModificationMessage(new BMessage(FIND_TEXT_CHANGED));
- fFindPreviousButton = new BButton("Previous",
+ fFindPreviousButton = new BButton(B_TRANSLATE("Previous"),
new BMessage(EDIT_FIND_PREVIOUS));
- fFindNextButton = new BButton("Next", new BMessage(EDIT_FIND_NEXT));
- fFindCloseButton = new BButton("Close",
+ fFindNextButton = new BButton(B_TRANSLATE("Next"),
+ new BMessage(EDIT_FIND_NEXT));
+ fFindCloseButton = new BButton(B_TRANSLATE("Close"),
new BMessage(EDIT_HIDE_FIND_GROUP));
- fFindCaseSensitiveCheckBox = new BCheckBox("Match case");
+ fFindCaseSensitiveCheckBox = new BCheckBox(B_TRANSLATE("Match case"));
BGroupLayout* findGroup = BLayoutBuilder::Group<>(B_VERTICAL, 0.0)
.Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
.Add(BGroupLayoutBuilder(B_HORIZONTAL, kElementSpacing)
@@ -511,7 +524,7 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
// Add shortcuts to select a particular tab
for (int32 i = 1; i <= 9; i++) {
- BMessage *selectTab = new BMessage(SELECT_TAB);
+ BMessage* selectTab = new BMessage(SELECT_TAB);
selectTab->AddInt32("tab index", i - 1);
char numStr[2];
snprintf(numStr, sizeof(numStr), "%d", (int) i);
@@ -603,10 +616,10 @@ BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
// Only do this when the mouse is over the web view
if (CurrentWebView()->Bounds().Contains(where)) {
// Zoom and unzoom text on Command + mouse wheel.
- // This could of course (and maybe should be) implemented in the WebView, but there
- // would need to be a way for the WebView to know the setting of the
- // fZoomTextOnly member here. Plus other clients of the API may not want
- // this feature.
+ // This could of course (and maybe should be) implemented in the
+ // WebView, but there would need to be a way for the WebView to
+ // know the setting of the fZoomTextOnly member here. Plus other
+ // clients of the API may not want this feature.
if ((modifiers() & B_COMMAND_KEY) != 0) {
float dy;
if (message->FindFloat("be:wheel_delta_y", &dy) == B_OK) {
@@ -667,8 +680,10 @@ BrowserWindow::MessageReceived(BMessage* message)
BrowsingHistory* history = BrowsingHistory::DefaultInstance();
if (history->CountItems() == 0)
break;
- BAlert* alert = new BAlert("Confirmation", "Do you really want to "
- "clear the browsing history?", "Clear", "Cancel");
+ BAlert* alert = new BAlert(B_TRANSLATE("Confirmation"),
+ B_TRANSLATE("Do you really want to "
+ "clear the browsing history?"), B_TRANSLATE("Clear"),
+ B_TRANSLATE("Cancel"));
if (alert->Go() == 0)
history->Clear();
break;
@@ -715,11 +730,12 @@ BrowserWindow::MessageReceived(BMessage* message)
}
message->RemoveName("refs");
if (addedCount > 10) {
- BString string;
- string << "Do you want to open " << addedCount;
- string << " bookmarks all at once?";
- BAlert* alert = new BAlert("Open bookmarks confirmation",
- string.String(), "Cancel", "Open all");
+ BString string(B_TRANSLATE_COMMENT("Do you want to open %addedCount "
+ "bookmarks all at once?", "Don't translate variable %addedCount."));
+ string.ReplaceFirst("%addedCount", BString() << addedCount);
+
+ BAlert* alert = new BAlert(B_TRANSLATE("Open bookmarks confirmation"),
+ string.String(), B_TRANSLATE("Cancel"), B_TRANSLATE("Open all"));
if (alert->Go() == 0)
break;
}
@@ -1100,7 +1116,7 @@ BrowserWindow::CreateNewTab(const BString& _url, bool select, BWebView* webView)
bool isNewWindow = fTabManager->CountTabs() == 0;
- fTabManager->AddTab(webView, "New tab");
+ fTabManager->AddTab(webView, B_TRANSLATE("New tab"));
BString url(_url);
if (applyNewPagePolicy && url.Length() == 0)
@@ -1185,7 +1201,7 @@ BrowserWindow::NewWindowRequested(const BString& url, bool primaryAction)
void
BrowserWindow::NewPageCreated(BWebView* view, BRect windowFrame,
- bool modalDialog, bool resizable, bool activate)
+ bool modalDialog, bool resizable, bool activate)
{
if (windowFrame.IsValid()) {
BrowserWindow* window = new BrowserWindow(windowFrame, fAppSettings,
@@ -1218,7 +1234,7 @@ BrowserWindow::LoadNegotiating(const BString& url, BWebView* view)
fURLInputGroup->SetText(url.String());
- BString status("Requesting: ");
+ BString status(B_TRANSLATE("Requesting: "));
status << url;
view->WebPage()->SetStatusMessage(status);
}
@@ -1233,7 +1249,7 @@ BrowserWindow::LoadCommitted(const BString& url, BWebView* view)
// This hook is invoked when the load is commited.
fURLInputGroup->SetText(url.String());
- BString status("Loading: ");
+ BString status(B_TRANSLATE("Loading: "));
status << url;
view->WebPage()->SetStatusMessage(status);
}
@@ -1259,8 +1275,9 @@ BrowserWindow::LoadFailed(const BString& url, BWebView* view)
if (view != CurrentWebView())
return;
- BString status(url);
- status << " failed.";
+ BString status(B_TRANSLATE_COMMENT("%url failed.", "Loading URL failed. "
+ "Don't translate variable %url."));
+ status.ReplaceFirst("%url", url);
view->WebPage()->SetStatusMessage(status);
if (!fLoadingProgressBar->IsHidden())
fLoadingProgressBar->Hide();
@@ -1273,8 +1290,9 @@ BrowserWindow::LoadFinished(const BString& url, BWebView* view)
if (view != CurrentWebView())
return;
- BString status(url);
- status << " finished.";
+ BString status(B_TRANSLATE_COMMENT("%url finished.", "Loading URL "
+ "finished. Don't translate variable %url."));
+ status.ReplaceFirst("%url", url);
view->WebPage()->SetStatusMessage(status);
if (!fLoadingProgressBar->IsHidden())
fLoadingProgressBar->Hide();
@@ -1283,8 +1301,9 @@ BrowserWindow::LoadFinished(const BString& url, BWebView* view)
fForwardButton->IsEnabled(), false, view);
int32 tabIndex = fTabManager->TabForView(view);
- if (tabIndex > 0 && strcmp("New tab", fTabManager->TabLabel(tabIndex)) == 0)
- fTabManager->SetTabLabel(tabIndex, url);
+ if (tabIndex > 0 && strcmp(B_TRANSLATE("New tab"),
+ fTabManager->TabLabel(tabIndex)) == 0)
+ fTabManager->SetTabLabel(tabIndex, url);
}
@@ -1447,8 +1466,8 @@ BrowserWindow::UpdateGlobalHistory(const BString& url)
bool
BrowserWindow::AuthenticationChallenge(BString message, BString& inOutUser,
- BString& inOutPassword, bool& inOutRememberCredentials, uint32 failureCount,
- BWebView* view)
+ BString& inOutPassword, bool& inOutRememberCredentials,
+ uint32 failureCount, BWebView* view)
{
CredentialsStorage* persistentStorage
= CredentialsStorage::PersistentInstance();
@@ -1571,11 +1590,13 @@ BrowserWindow::_CreateBookmark()
BPath path;
status_t status = _BookmarkPath(path);
if (status != B_OK) {
- BString message("There was an error retrieving the bookmark "
- "folder.\n\n");
- message << "Error: " << strerror(status);
- BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
- NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
+ BString message(B_TRANSLATE_COMMENT("There was an error retrieving "
+ "the bookmark folder.\n\nError: %error", "Don't translate the "
+ "variable %error"));
+ message.ReplaceFirst("%error", strerror(status));
+ BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
+ message.String(), B_TRANSLATE("OK"), NULL, NULL,
+ B_WIDTH_AS_USUAL, B_STOP_ALERT);
alert->Go();
return;
}
@@ -1599,10 +1620,12 @@ BrowserWindow::_CreateBookmark()
// URLs, only for matching file names.
BDirectory directory(path.Path());
if (status == B_OK && _CheckBookmarkExists(directory, bookmarkName, url)) {
- BString message("A bookmark for this page (");
- message << bookmarkName;
- message << ") already exists.";
- BAlert* alert = new BAlert("Bookmark info", message.String(), "OK");
+ BString message(B_TRANSLATE_COMMENT("A bookmark for this page "
+ "(%bookmarkName) already exists.", "Don't translate variable "
+ "%bookmarkName"));
+ message.ReplaceFirst("%bookmarkName", bookmarkName);
+ BAlert* alert = new BAlert(B_TRANSLATE("Bookmark info"),
+ message.String(), B_TRANSLATE("OK"));
alert->Go();
return;
}
@@ -1690,11 +1713,13 @@ BrowserWindow::_CreateBookmark()
}
if (status != B_OK) {
- BString message("There was an error creating the bookmark "
- "file.\n\n");
- message << "Error: " << strerror(status);
- BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
- NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
+ BString message(B_TRANSLATE_COMMENT("There was an error creating the "
+ "bookmark file.\n\nError: %error", "Don't translate variable "
+ "%error"));
+ message.ReplaceFirst("%error", strerror(status));
+ BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
+ message.String(), B_TRANSLATE("OK"), NULL, NULL,
+ B_WIDTH_AS_USUAL, B_STOP_ALERT);
alert->Go();
return;
}
@@ -1713,11 +1738,13 @@ BrowserWindow::_ShowBookmarks()
status = be_roster->Launch(&ref);
if (status != B_OK && status != B_ALREADY_RUNNING) {
- BString message("There was an error trying to show the Bookmarks "
- "folder.\n\n");
- message << "Error: " << strerror(status);
- BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
- NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
+ BString message(B_TRANSLATE_COMMENT("There was an error trying to "
+ "show the Bookmarks folder.\n\nError: %error", "Don't translate variable "
+ "%error"));
+ message.ReplaceFirst("%error", strerror(status));
+ BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
+ message.String(), B_TRANSLATE("OK"), NULL, NULL,
+ B_WIDTH_AS_USUAL, B_STOP_ALERT);
alert->Go();
return;
}
@@ -1857,7 +1884,7 @@ BrowserWindow::_UpdateHistoryMenu()
return;
int32 count = history->CountItems();
- BMenuItem* clearHistoryItem = new BMenuItem("Clear history",
+ BMenuItem* clearHistoryItem = new BMenuItem(B_TRANSLATE("Clear history"),
new BMessage(CLEAR_HISTORY));
clearHistoryItem->SetEnabled(count > 0);
fHistoryMenu->AddItem(clearHistoryItem);
@@ -1885,8 +1912,8 @@ BrowserWindow::_UpdateHistoryMenu()
BDateTime fiveDaysAgoStart = fourDaysAgoStart;
fiveDaysAgoStart.Date().AddDays(-1);
- BMenu* todayMenu = new BMenu("Today");
- BMenu* yesterdayMenu = new BMenu("Yesterday");
+ BMenu* todayMenu = new BMenu(B_TRANSLATE("Today"));
+ BMenu* yesterdayMenu = new BMenu(B_TRANSLATE("Yesterday"));
BMenu* twoDaysAgoMenu = new BMenu(
twoDaysAgoStart.Date().LongDayName().String());
BMenu* threeDaysAgoMenu = new BMenu(
@@ -1895,7 +1922,7 @@ BrowserWindow::_UpdateHistoryMenu()
fourDaysAgoStart.Date().LongDayName().String());
BMenu* fiveDaysAgoMenu = new BMenu(
fiveDaysAgoStart.Date().LongDayName().String());
- BMenu* earlierMenu = new BMenu("Earlier");
+ BMenu* earlierMenu = new BMenu(B_TRANSLATE("Earlier"));
for (int32 i = 0; i < count; i++) {
BrowsingHistoryItem historyItem = history->HistoryItemAt(i);
@@ -2075,8 +2102,9 @@ void
BrowserWindow::_ShowProgressBar(bool show)
{
if (show) {
- if (!fStatusGroup->IsVisible() && (fVisibleInterfaceElements & INTERFACE_ELEMENT_STATUS) != 0)
- fStatusGroup->SetVisible(true);
+ if (!fStatusGroup->IsVisible() && (fVisibleInterfaceElements
+ & INTERFACE_ELEMENT_STATUS) != 0)
+ fStatusGroup->SetVisible(true);
fLoadingProgressBar->Show();
} else {
if (!fInterfaceVisible)
@@ -2130,7 +2158,7 @@ BrowserWindow::_SmartURLHandler(const BString& url) const
{
BString result = url;
- // Only process if this doesn't look like a full URL (http:// or
+ // Only process if this doesn't look like a full URL (http:// or
// file://, etc.)
if (url.FindFirst("://") == B_ERROR) {
if (url.FindFirst(".") == B_ERROR || url.FindFirst(" ") != B_ERROR)
@@ -2207,7 +2235,8 @@ BrowserWindow::_HandlePageSourceResult(const BMessage* message)
char buffer[1024];
snprintf(buffer, sizeof(buffer), "Failed to show the "
"page source: %s\n", strerror(ret));
- BAlert* alert = new BAlert("Page source error", buffer, "OK");
+ BAlert* alert = new BAlert(B_TRANSLATE("Page source error"), buffer,
+ B_TRANSLATE("OK"));
alert->Go(NULL);
}
}
diff --git a/src/apps/webpositive/DownloadProgressView.cpp b/src/apps/webpositive/DownloadProgressView.cpp
index 7031e429c3..16c0ff103d 100644
--- a/src/apps/webpositive/DownloadProgressView.cpp
+++ b/src/apps/webpositive/DownloadProgressView.cpp
@@ -32,11 +32,13 @@
#include <Alert.h>
#include <Bitmap.h>
#include <Button.h>
+#include <Catalog.h>
#include <Clipboard.h>
#include <Directory.h>
#include <Entry.h>
#include <FindDirectory.h>
#include <GroupLayoutBuilder.h>
+#include <Locale.h>
#include <MenuItem.h>
#include <NodeInfo.h>
#include <NodeMonitor.h>
@@ -51,6 +53,9 @@
#include "StringForSize.h"
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "Download Window"
+
enum {
OPEN_DOWNLOAD = 'opdn',
RESTART_DOWNLOAD = 'rsdn',
@@ -143,7 +148,8 @@ public:
virtual BSize MinSize()
{
- return BSize(fIconBitmap.Bounds().Width(), fIconBitmap.Bounds().Height());
+ return BSize(fIconBitmap.Bounds().Width(),
+ fIconBitmap.Bounds().Height());
}
virtual BSize PreferredSize()
@@ -218,8 +224,8 @@ DownloadProgressView::Init(BMessage* archive)
fLastSpeedReferenceSize = 0;
fEstimatedFinishReferenceSize = 0;
- fProcessStartTime = fLastSpeedReferenceTime = fEstimatedFinishReferenceTime
- = system_time();
+ fProcessStartTime = fLastSpeedReferenceTime
+ = fEstimatedFinishReferenceTime = system_time();
SetViewColor(245, 245, 245);
SetFlags(Flags() | B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW);
@@ -245,16 +251,20 @@ DownloadProgressView::Init(BMessage* archive)
} else
fIconView = new IconView();
- if (!fDownload && (fStatusBar->CurrentValue() < 100 || !entry.Exists()))
- fTopButton = new SmallButton("Restart", new BMessage(RESTART_DOWNLOAD));
- else {
- fTopButton = new SmallButton("Open", new BMessage(OPEN_DOWNLOAD));
+ if (!fDownload && (fStatusBar->CurrentValue() < 100 || !entry.Exists())) {
+ fTopButton = new SmallButton(B_TRANSLATE("Restart"),
+ new BMessage(RESTART_DOWNLOAD));
+ } else {
+ fTopButton = new SmallButton(B_TRANSLATE("Open"),
+ new BMessage(OPEN_DOWNLOAD));
fTopButton->SetEnabled(fDownload == NULL);
}
- if (fDownload)
- fBottomButton = new SmallButton("Cancel", new BMessage(CANCEL_DOWNLOAD));
- else {
- fBottomButton = new SmallButton("Remove", new BMessage(REMOVE_DOWNLOAD));
+ if (fDownload) {
+ fBottomButton = new SmallButton(B_TRANSLATE("Cancel"),
+ new BMessage(CANCEL_DOWNLOAD));
+ } else {
+ fBottomButton = new SmallButton(B_TRANSLATE("Remove"),
+ new BMessage(REMOVE_DOWNLOAD));
fBottomButton->SetEnabled(fDownload == NULL);
}
@@ -399,8 +409,9 @@ DownloadProgressView::MessageReceived(BMessage* message)
if (status == B_OK)
status = be_roster->Launch(&ref);
if (status != B_OK && status != B_ALREADY_RUNNING) {
- BAlert* alert = new BAlert("Open download error",
- "The download could not be opened.", "OK");
+ BAlert* alert = new BAlert(B_TRANSLATE("Open download error"),
+ B_TRANSLATE("The download could not be opened."),
+ B_TRANSLATE("OK"));
alert->Go(NULL);
}
break;
@@ -572,11 +583,11 @@ DownloadProgressView::ShowContextMenu(BPoint screenWhere)
screenWhere += BPoint(2, 2);
BPopUpMenu* contextMenu = new BPopUpMenu("download context");
- BMenuItem* copyURL = new BMenuItem("Copy URL to clipboard",
+ BMenuItem* copyURL = new BMenuItem(B_TRANSLATE("Copy URL to clipboard"),
new BMessage(COPY_URL_TO_CLIPBOARD));
copyURL->SetEnabled(fURL.Length() > 0);
contextMenu->AddItem(copyURL);
- BMenuItem* openFolder = new BMenuItem("Open containing folder",
+ BMenuItem* openFolder = new BMenuItem(B_TRANSLATE("Open containing folder"),
new BMessage(OPEN_CONTAINING_FOLDER));
contextMenu->AddItem(openFolder);
@@ -622,7 +633,7 @@ DownloadProgressView::DownloadFinished()
fExpectedSize = fCurrentSize;
}
fTopButton->SetEnabled(true);
- fBottomButton->SetLabel("Remove");
+ fBottomButton->SetLabel(B_TRANSLATE("Remove"));
fBottomButton->SetMessage(new BMessage(REMOVE_DOWNLOAD));
fBottomButton->SetEnabled(true);
fInfoView->SetText("");
@@ -633,10 +644,10 @@ void
DownloadProgressView::DownloadCanceled()
{
fDownload = NULL;
- fTopButton->SetLabel("Restart");
+ fTopButton->SetLabel(B_TRANSLATE("Restart"));
fTopButton->SetMessage(new BMessage(RESTART_DOWNLOAD));
fTopButton->SetEnabled(true);
- fBottomButton->SetLabel("Remove");
+ fBottomButton->SetLabel(B_TRANSLATE("Remove"));
fBottomButton->SetMessage(new BMessage(REMOVE_DOWNLOAD));
fBottomButton->SetEnabled(true);
fInfoView->SetText("");
@@ -726,12 +737,14 @@ DownloadProgressView::_UpdateStatusText()
currentSize.Truncate(currentSizeUnitPos);
}
buffer << currentSize;
- buffer << " of ";
+ buffer << " ";
+ buffer << B_TRANSLATE_COMMENT("of", "...as in '12kB of 256kB'");
+ buffer << " ";
buffer << expectedSize;
buffer << ", ";
buffer << string_for_size(fBytesPerSecond, sizeBuffer,
sizeof(sizeBuffer));
- buffer << "/s)";
+ buffer << B_TRANSLATE_COMMENT("/s)", "...as in 'per second'");
float stringWidth = fInfoView->StringWidth(buffer.String());
if (stringWidth < fInfoView->Bounds().Width())
fInfoView->SetText(buffer.String());
@@ -739,7 +752,7 @@ DownloadProgressView::_UpdateStatusText()
// complete string too wide, try with shorter version
buffer << string_for_size(fBytesPerSecond, sizeBuffer,
sizeof(sizeBuffer));
- buffer << "/s";
+ buffer << B_TRANSLATE_COMMENT("/s)", "...as in 'per second'");
stringWidth = fInfoView->StringWidth(buffer.String());
if (stringWidth < fInfoView->Bounds().Width())
fInfoView->SetText(buffer.String());
@@ -770,7 +783,7 @@ DownloadProgressView::_UpdateStatusText()
2, time->tm_hour, 2, time->tm_min);
}
- BString buffer1("Finish: ");
+ BString buffer1(B_TRANSLATE_COMMENT("Finish: ", "Finishing time"));
buffer1 << timeText;
finishTime -= now;
time = gmtime(&finishTime);
@@ -779,30 +792,36 @@ DownloadProgressView::_UpdateStatusText()
if (finishTime > secondsPerDay) {
int64 days = finishTime / secondsPerDay;
if (days == 1)
- buffer2 << "Over 1 day";
- else
- buffer2 << "Over " << days << " days";
+ buffer2 << B_TRANSLATE("Over 1 day left");
+ else {
+ buffer2 << B_TRANSLATE("Over %days days left");
+ buffer2.ReplaceFirst("%days", BString() << days);
+ }
} else if (finishTime > 60 * 60) {
int64 hours = finishTime / (60 * 60);
if (hours == 1)
- buffer2 << "Over 1 hour";
- else
- buffer2 << "Over " << hours << " hours";
+ buffer2 << B_TRANSLATE("Over 1 hour left");
+ else {
+ buffer2 << B_TRANSLATE("Over %hours hours left");
+ buffer2.ReplaceFirst("%hours", BString() << hours);
+ }
} else if (finishTime > 60) {
int64 minutes = finishTime / 60;
if (minutes == 1)
- buffer2 << "Over 1 minute";
- else
- buffer2 << minutes << " minutes";
+ buffer2 << B_TRANSLATE("Over 1 minute left");
+ else {
+ buffer2 << B_TRANSLATE("%minutes minutes");
+ buffer2.ReplaceFirst("%minutes", BString() << minutes);
+ }
} else {
if (finishTime == 1)
- buffer2 << "1 second";
- else
- buffer2 << finishTime << " seconds";
+ buffer2 << B_TRANSLATE("1 second left");
+ else {
+ buffer2 << B_TRANSLATE("%seconds seconds left");
+ buffer2.ReplaceFirst("%seconds", BString() << finishTime);
+ }
}
- buffer2 << " left";
-
buffer = "(";
buffer << buffer1 << " - " << buffer2 << ")";
diff --git a/src/apps/webpositive/DownloadWindow.cpp b/src/apps/webpositive/DownloadWindow.cpp
index 859722df47..72c7663697 100644
--- a/src/apps/webpositive/DownloadWindow.cpp
+++ b/src/apps/webpositive/DownloadWindow.cpp
@@ -31,12 +31,14 @@
#include <Alert.h>
#include <Button.h>
+#include <Catalog.h>
#include <ControlLook.h>
#include <Entry.h>
#include <File.h>
#include <FindDirectory.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
+#include <Locale.h>
#include <MenuBar.h>
#include <MenuItem.h>
#include <Path.h>
@@ -54,6 +56,9 @@
#include "WebPage.h"
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "Download Window"
+
enum {
INIT = 'init',
OPEN_DOWNLOADS_FOLDER = 'odnf',
@@ -134,7 +139,7 @@ protected:
DownloadWindow::DownloadWindow(BRect frame, bool visible,
SettingsMessage* settings)
- : BWindow(frame, "Downloads",
+ : BWindow(frame, B_TRANSLATE("Downloads"),
B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE),
fMinimizeOnClose(false)
@@ -155,26 +160,27 @@ DownloadWindow::DownloadWindow(BRect frame, bool visible,
fDownloadViewsLayout = downloadsGroupView->GroupLayout();
BMenuBar* menuBar = new BMenuBar("Menu bar");
- BMenu* menu = new BMenu("Downloads");
- menu->AddItem(new BMenuItem("Open downloads folder",
+ BMenu* menu = new BMenu(B_TRANSLATE("Downloads"));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Open downloads folder"),
new BMessage(OPEN_DOWNLOADS_FOLDER)));
BMessage* newWindowMessage = new BMessage(NEW_WINDOW);
newWindowMessage->AddString("url", "");
- BMenuItem* newWindowItem = new BMenuItem("New browser window",
+ BMenuItem* newWindowItem = new BMenuItem(B_TRANSLATE("New browser window"),
newWindowMessage, 'N');
menu->AddItem(newWindowItem);
newWindowItem->SetTarget(be_app);
menu->AddSeparatorItem();
- menu->AddItem(new BMenuItem("Hide", new BMessage(B_QUIT_REQUESTED), 'D'));
+ menu->AddItem(new BMenuItem(B_TRANSLATE("Hide"),
+ new BMessage(B_QUIT_REQUESTED), 'D'));
menuBar->AddItem(menu);
fDownloadsScrollView = new DownloadContainerScrollView(downloadsGroupView);
- fRemoveFinishedButton = new BButton("Remove finished",
+ fRemoveFinishedButton = new BButton(B_TRANSLATE("Remove finished"),
new BMessage(REMOVE_FINISHED_DOWNLOADS));
fRemoveFinishedButton->SetEnabled(false);
- fRemoveMissingButton = new BButton("Remove missing",
+ fRemoveMissingButton = new BButton(B_TRANSLATE("Remove missing"),
new BMessage(REMOVE_MISSING_DOWNLOADS));
fRemoveMissingButton->SetEnabled(false);
@@ -274,11 +280,12 @@ DownloadWindow::MessageReceived(BMessage* message)
if (status == B_OK)
status = be_roster->Launch(&ref);
if (status != B_OK && status != B_ALREADY_RUNNING) {
- BString errorString("The downloads folder could not be "
- "opened.\n\n");
- errorString << "Error: " << strerror(status);
- BAlert* alert = new BAlert("Error opening downloads folder",
- errorString.String(), "OK");
+ BString errorString(B_TRANSLATE_COMMENT("The downloads folder could "
+ "not be opened.\n\nError: %error", "Don't translate "
+ "variable %error"));
+ errorString.ReplaceFirst("%error", strerror(status));
+ BAlert* alert = new BAlert(B_TRANSLATE("Error opening downloads "
+ "folder"), errorString.String(), B_TRANSLATE("OK"));
alert->Go(NULL);
}
break;
@@ -528,9 +535,10 @@ DownloadWindow::_SaveSettings()
item->View());
if (!view)
continue;
- BMessage downloadArchive;
- if (view->SaveSettings(&downloadArchive) == B_OK)
- message.AddMessage("download", &downloadArchive);
+
+ BMessage downloadArchive;
+ if (view->SaveSettings(&downloadArchive) == B_OK)
+ message.AddMessage("download", &downloadArchive);
}
message.Flatten(&file);
}
diff --git a/src/apps/webpositive/URLInputGroup.cpp b/src/apps/webpositive/URLInputGroup.cpp
index f84f0e12bf..421d78fa64 100644
--- a/src/apps/webpositive/URLInputGroup.cpp
+++ b/src/apps/webpositive/URLInputGroup.cpp
@@ -7,10 +7,12 @@
#include <Bitmap.h>
#include <Button.h>
+#include <Catalog.h>
#include <ControlLook.h>
#include <Clipboard.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
+#include <Locale.h>
#include <LayoutUtils.h>
#include <MenuItem.h>
#include <PopUpMenu.h>
@@ -28,6 +30,10 @@
#include "TextViewCompleter.h"
+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "URL Bar"
+
+
class URLChoice : public BAutoCompleter::Choice {
public:
URLChoice(const BString& choiceText, const BString& displayText,
@@ -235,10 +241,14 @@ URLInputGroup::URLTextView::MouseDown(BPoint where)
be_clipboard->Unlock();
}
- BMenuItem* cutItem = new BMenuItem("Cut", new BMessage(B_CUT));
- BMenuItem* copyItem = new BMenuItem("Copy", new BMessage(B_COPY));
- BMenuItem* pasteItem = new BMenuItem("Paste", new BMessage(B_PASTE));
- BMenuItem* clearItem = new BMenuItem("Clear", new BMessage(MSG_CLEAR));
+ BMenuItem* cutItem = new BMenuItem(B_TRANSLATE("Cut"),
+ new BMessage(B_CUT));
+ BMenuItem* copyItem = new BMenuItem(B_TRANSLATE("Copy"),
+ new BMessage(B_COPY));
+ BMenuItem* pasteItem = new BMenuItem(B_TRANSLATE("Paste"),
+ new BMessage(B_PASTE));
+ BMenuItem* clearItem = new BMenuItem(B_TRANSLATE("Clear"),
+ new BMessage(MSG_CLEAR));
cutItem->SetEnabled(canCutOrCopy);
copyItem->SetEnabled(canCutOrCopy);
pasteItem->SetEnabled(canPaste);
@@ -362,8 +372,8 @@ URLInputGroup::URLTextView::InsertText(const char* inText, int32 inLength,
baseUrlEnd = TextLength();
BFont font;
GetFont(&font);
- const rgb_color black = (rgb_color){ 0, 0, 0, 255 };
- const rgb_color gray = (rgb_color){ 60, 60, 60, 255 };
+ const rgb_color black = (rgb_color) { 0, 0, 0, 255 };
+ const rgb_color gray = (rgb_color) { 60, 60, 60, 255 };
if (baseUrlStart > 0)
SetFontAndColor(0, baseUrlStart - 1, &font, B_FONT_ALL, &gray);
if (baseUrlEnd > baseUrlStart) {