From 15301dc49b5596b4e4f485f1d5e5b86dab596e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 8 Mar 2011 17:40:58 +0000 Subject: [PATCH] * Applied patch by Karvjorm that localizes Sudoku - thanks! * I removed translating the debug output, though. Style fixes come in the next commit with the hope for improvement in future patches. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40874 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/sudoku/Jamfile | 16 +++++- src/apps/sudoku/ProgressWindow.cpp | 8 ++- src/apps/sudoku/Sudoku.cpp | 12 ++-- src/apps/sudoku/SudokuGenerator.cpp | 9 ++- src/apps/sudoku/SudokuWindow.cpp | 87 +++++++++++++++++------------ 5 files changed, 88 insertions(+), 44 deletions(-) diff --git a/src/apps/sudoku/Jamfile b/src/apps/sudoku/Jamfile index dd3087c7f9..eaebd2d819 100644 --- a/src/apps/sudoku/Jamfile +++ b/src/apps/sudoku/Jamfile @@ -12,6 +12,20 @@ Application Sudoku : SudokuView.cpp SudokuWindow.cpp - : be tracker $(TARGET_LIBSTDC++) + : be tracker $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSTDC++) : Sudoku.rdef ; + +DoCatalogs Sudoku : + x-vnd.Haiku-Sudoku + : + ProgressWindow.cpp + Sudoku.cpp + SudokuGenerator.cpp + SudokuWindow.cpp +; + +AddCatalogEntryAttribute Sudoku + : + x-vnd.Haiku-Sudoku:SudokuWindow:Sudoku +; diff --git a/src/apps/sudoku/ProgressWindow.cpp b/src/apps/sudoku/ProgressWindow.cpp index ab9693b069..c84c663635 100644 --- a/src/apps/sudoku/ProgressWindow.cpp +++ b/src/apps/sudoku/ProgressWindow.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -15,12 +16,15 @@ #include +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "ProgressWindow" + static const uint32 kMsgShow = 'show'; ProgressWindow::ProgressWindow(BWindow* referenceWindow, BMessage* abortMessage) - : BWindow(BRect(0, 0, 250, 100), "Progress monitor", + : BWindow(BRect(0, 0, 250, 100), B_TRANSLATE("Progress monitor"), B_MODAL_WINDOW_LOOK, B_FLOATING_APP_WINDOW_FEEL, B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS), fRunner(NULL) @@ -41,7 +45,7 @@ ProgressWindow::ProgressWindow(BWindow* referenceWindow, if (abortMessage != NULL && referenceWindow) { rect.top += height + 8; - BButton* button = new BButton(rect, "abort", "Abort", + BButton* button = new BButton(rect, "abort", B_TRANSLATE("Abort"), abortMessage); button->ResizeToPreferred(); button->MoveBy((rect.Width() - button->Bounds().Width()) / 2, 0); diff --git a/src/apps/sudoku/Sudoku.cpp b/src/apps/sudoku/Sudoku.cpp index b10c6033ae..b53227d21c 100644 --- a/src/apps/sudoku/Sudoku.cpp +++ b/src/apps/sudoku/Sudoku.cpp @@ -12,8 +12,11 @@ #include #include +#include #include +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "Sudoku" const char* kSignature = "application/x-vnd.Haiku-Sudoku"; @@ -61,9 +64,9 @@ Sudoku::AboutRequested() void Sudoku::DisplayAbout() { - BAlert *alert = new BAlert("about", "Sudoku\n" + BAlert *alert = new BAlert(B_TRANSLATE("About"), B_TRANSLATE("Sudoku\n" "\twritten by Axel Dörfler\n" - "\tCopyright 2007, Haiku Inc.\n", "OK"); + "\tCopyright 2007, Haiku Inc.\n"), B_TRANSLATE("OK")); BTextView *view = alert->TextView(); BFont font; @@ -72,8 +75,9 @@ Sudoku::DisplayAbout() view->GetFont(&font); font.SetSize(18); font.SetFace(B_BOLD_FACE); - view->SetFontAndColor(0, 6, &font); - + view->SetFontAndColor(0, strlen(B_TRANSLATE("Sudoku")), &font); + + alert->SetShortcut(0, B_ESCAPE); alert->Go(); } diff --git a/src/apps/sudoku/SudokuGenerator.cpp b/src/apps/sudoku/SudokuGenerator.cpp index cce863a8f9..12d5bc9635 100644 --- a/src/apps/sudoku/SudokuGenerator.cpp +++ b/src/apps/sudoku/SudokuGenerator.cpp @@ -10,10 +10,15 @@ #include "SudokuField.h" #include "SudokuSolver.h" +#include + #include #include #include +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "SudokuGenerator" + SudokuGenerator::SudokuGenerator() { } @@ -54,7 +59,7 @@ SudokuGenerator::Generate(SudokuField* target, uint32 fieldsLeft, SudokuField field(target->BlockSize()); uint32 inputCount = field.Size() * field.Size() / 3; - _Progress(progress, "Creating solvable field", 5.f); + _Progress(progress, B_TRANSLATE("Creating solvable field"), 5.f); while (!*quit) { field.Reset(); @@ -107,7 +112,7 @@ SudokuGenerator::Generate(SudokuField* target, uint32 fieldsLeft, bool tried[field.Size() * field.Size()]; int32 tries = field.Size() * field.Size() * 3 / 4; memset(tried, 0, sizeof(tried)); - _Progress(progress, "Searching for removable values", 30.f); + _Progress(progress, B_TRANSLATE("Searching for removable values"), 30.f); while (!*quit && removeCount > 0 && tries-- > 0) { SudokuField copy(field); diff --git a/src/apps/sudoku/SudokuWindow.cpp b/src/apps/sudoku/SudokuWindow.cpp index 9768b6fea1..f5bd86bd35 100644 --- a/src/apps/sudoku/SudokuWindow.cpp +++ b/src/apps/sudoku/SudokuWindow.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -29,6 +30,9 @@ #include "SudokuView.h" +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "SudokuWindow" + const uint32 kMsgOpenFilePanel = 'opfp'; const uint32 kMsgGenerateSudoku = 'gnsu'; const uint32 kMsgAbortSudokuGenerator = 'asgn'; @@ -111,7 +115,9 @@ GenerateSudoku::_Generate() bigtime_t start = system_time(); generator.Generate(&fField, 40 - fLevel * 5, fProgress, &fQuit); - printf("generated in %g msecs\n", + printf(B_TRANSLATE_WITH_CONTEXT("generated in %g msecs\n", + "When Sudoku is launched from a Terminal window, this message " + "is shown there."), (system_time() - start) / 1000.0); BMessage done(kMsgSudokuGenerated); @@ -138,8 +144,8 @@ GenerateSudoku::_GenerateThread(void* _self) SudokuWindow::SudokuWindow() - : BWindow(BRect(100, 100, 500, 520), "Sudoku", B_TITLED_WINDOW, - B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE), + : BWindow(BRect(100, 100, 500, 520), B_TRANSLATE("Sudoku"), + B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE), fGenerator(NULL), fStoredState(NULL), fExportFormat(kExportAsText) @@ -189,29 +195,31 @@ SudokuWindow::SudokuWindow() // add menu // "File" menu - BMenu* menu = new BMenu("File"); - fNewMenu = new BMenu("New"); + BMenu* menu = new BMenu(B_TRANSLATE("File")); + fNewMenu = new BMenu(B_TRANSLATE("New")); menu->AddItem(new BMenuItem(fNewMenu, new BMessage(kMsgGenerateSudoku))); fNewMenu->Superitem()->SetShortcut('N', B_COMMAND_KEY); BMessage* message = new BMessage(kMsgGenerateSudoku); message->AddInt32("level", kEasyLevel); - fNewMenu->AddItem(new BMenuItem("Easy", message)); + fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Easy"), message)); message = new BMessage(kMsgGenerateSudoku); message->AddInt32("level", kAdvancedLevel); - fNewMenu->AddItem(new BMenuItem("Advanced", message)); + fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Advanced"), message)); message = new BMessage(kMsgGenerateSudoku); message->AddInt32("level", kHardLevel); - fNewMenu->AddItem(new BMenuItem("Hard", message)); + fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Hard"), message)); fNewMenu->AddSeparatorItem(); - fNewMenu->AddItem(new BMenuItem("Blank", new BMessage(kMsgNewBlank))); + fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Blank"), + new BMessage(kMsgNewBlank))); - menu->AddItem(new BMenuItem("Start again", new BMessage(kMsgStartAgain))); + menu->AddItem(new BMenuItem(B_TRANSLATE("Start again"), + new BMessage(kMsgStartAgain))); menu->AddSeparatorItem(); BMenu* recentsMenu = BRecentFilesList::NewFileListMenu( - "Open file" B_UTF8_ELLIPSIS, NULL, NULL, this, 10, false, NULL, - kSignature); + B_TRANSLATE("Open file" B_UTF8_ELLIPSIS), NULL, NULL, this, 10, false, + NULL, kSignature); BMenuItem *item; menu->AddItem(item = new BMenuItem(recentsMenu, new BMessage(kMsgOpenFilePanel))); @@ -219,35 +227,38 @@ SudokuWindow::SudokuWindow() menu->AddSeparatorItem(); - BMenu* subMenu = new BMenu("Export as" B_UTF8_ELLIPSIS); + BMenu* subMenu = new BMenu(B_TRANSLATE("Export as" B_UTF8_ELLIPSIS)); message = new BMessage(kMsgExportAs); message->AddInt32("as", kExportAsText); - subMenu->AddItem(new BMenuItem("Text", message)); + subMenu->AddItem(new BMenuItem(B_TRANSLATE("Text"), message)); message= new BMessage(kMsgExportAs); message->AddInt32("as", kExportAsHTML); - subMenu->AddItem(new BMenuItem("HTML", message)); + subMenu->AddItem(new BMenuItem(B_TRANSLATE("HTML"), message)); menu->AddItem(subMenu); - menu->AddItem(item = new BMenuItem("Copy", new BMessage(B_COPY), 'C')); + menu->AddItem(item = new BMenuItem(B_TRANSLATE("Copy"), + new BMessage(B_COPY), 'C')); menu->AddSeparatorItem(); - menu->AddItem(item = new BMenuItem("About Sudoku" B_UTF8_ELLIPSIS, + menu->AddItem(item = new BMenuItem( + B_TRANSLATE("About Sudoku" B_UTF8_ELLIPSIS), new BMessage(B_ABOUT_REQUESTED))); menu->AddSeparatorItem(); - menu->AddItem(new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q')); + menu->AddItem(new BMenuItem(B_TRANSLATE("Quit"), + new BMessage(B_QUIT_REQUESTED), 'Q')); menu->SetTargetForItems(this); item->SetTarget(be_app); menuBar->AddItem(menu); // "View" menu - menu = new BMenu("View"); - menu->AddItem(item = new BMenuItem("Mark invalid values", + menu = new BMenu(B_TRANSLATE("View")); + menu->AddItem(item = new BMenuItem(B_TRANSLATE("Mark invalid values"), new BMessage(kMsgMarkInvalid))); if ((fSudokuView->HintFlags() & kMarkInvalid) != 0) item->SetMarked(true); - menu->AddItem(item = new BMenuItem("Mark valid hints", + menu->AddItem(item = new BMenuItem(B_TRANSLATE("Mark valid hints"), new BMessage(kMsgMarkValidHints))); if ((fSudokuView->HintFlags() & kMarkValidHints) != 0) item->SetMarked(true); @@ -255,23 +266,27 @@ SudokuWindow::SudokuWindow() menuBar->AddItem(menu); // "Help" menu - menu = new BMenu("Help"); - menu->AddItem(fUndoItem = new BMenuItem("Undo", new BMessage(B_UNDO), 'Z')); + menu = new BMenu(B_TRANSLATE("Help")); + menu->AddItem(fUndoItem = new BMenuItem(B_TRANSLATE("Undo"), + new BMessage(B_UNDO), 'Z')); fUndoItem->SetEnabled(false); - menu->AddItem(fRedoItem = new BMenuItem("Redo", new BMessage(B_REDO), 'Z', + menu->AddItem(fRedoItem = new BMenuItem(B_TRANSLATE("Redo"), + new BMessage(B_REDO), 'Z', B_SHIFT_KEY)); fRedoItem->SetEnabled(false); menu->AddSeparatorItem(); - menu->AddItem(new BMenuItem("Snapshot current", + menu->AddItem(new BMenuItem(B_TRANSLATE("Snapshot current"), new BMessage(kMsgStoreState))); - menu->AddItem(fRestoreStateItem = new BMenuItem("Restore snapshot", + menu->AddItem(fRestoreStateItem = new BMenuItem( + B_TRANSLATE("Restore snapshot"), new BMessage(kMsgRestoreState))); fRestoreStateItem->SetEnabled(fStoredState != NULL); menu->AddSeparatorItem(); - menu->AddItem(new BMenuItem("Solve", new BMessage(kMsgSolveSudoku))); - menu->AddItem(new BMenuItem("Solve single field", + menu->AddItem(new BMenuItem(B_TRANSLATE("Solve"), + new BMessage(kMsgSolveSudoku))); + menu->AddItem(new BMenuItem(B_TRANSLATE("Solve single field"), new BMessage(kMsgSolveSingle))); menu->SetTargetForItems(fSudokuView); menuBar->AddItem(menu); @@ -396,15 +411,16 @@ SudokuWindow::_MessageDropped(BMessage* message) char buffer[1024]; if (hasRef) { snprintf(buffer, sizeof(buffer), - "Could not open \"%s\":\n" - "%s", ref.name, strerror(status)); + B_TRANSLATE("Could not open \"%s\":\n%s\n"), ref.name, + strerror(status)); } else { - snprintf(buffer, sizeof(buffer), "Could not set Sudoku:\n%s", + snprintf(buffer, sizeof(buffer), + B_TRANSLATE("Could not set Sudoku:\n%s\n"), strerror(status)); } - (new BAlert("Sudoku request", - buffer, "OK", NULL, NULL, + (new BAlert(B_TRANSLATE("Sudoku request"), + buffer, B_TRANSLATE("OK"), NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT))->Go(); } } @@ -546,8 +562,9 @@ SudokuWindow::MessageReceived(BMessage* message) } case kMsgSudokuSolved: - (new BAlert("Sudoku request", - "Sudoku solved - congratulations!", "OK", NULL, NULL, + (new BAlert(B_TRANSLATE("Sudoku request"), + B_TRANSLATE("Sudoku solved - congratulations!\n"), + B_TRANSLATE("OK"), NULL, NULL, B_WIDTH_AS_USUAL, B_IDEA_ALERT))->Go(); break;