Ticket #7345: sudoku-localization.patch

File sudoku-localization.patch, 13.3 KB (added by Karvjorm, 13 years ago)

A localization patch of Sudoku application

  • src/apps/sudoku/SudokuWindow.cpp

     
    1010
    1111#include <Alert.h>
    1212#include <Application.h>
     13#include <Catalog.h>
    1314#include <File.h>
    1415#include <FilePanel.h>
    1516#include <FindDirectory.h>
     
    2930#include "SudokuView.h"
    3031
    3132
     33#undef B_TRANSLATE_CONTEXT
     34#define B_TRANSLATE_CONTEXT "SudokuWindow"
     35
    3236const uint32 kMsgOpenFilePanel = 'opfp';
    3337const uint32 kMsgGenerateSudoku = 'gnsu';
    3438const uint32 kMsgAbortSudokuGenerator = 'asgn';
     
    111115
    112116    bigtime_t start = system_time();
    113117    generator.Generate(&fField, 40 - fLevel * 5, fProgress, &fQuit);
    114     printf("generated in %g msecs\n",
     118    printf(B_TRANSLATE_WITH_CONTEXT("generated in %g msecs\n",
     119        "When Sudoku is launched from a Terminal window, this message "
     120        "is shown there."),
    115121        (system_time() - start) / 1000.0);
    116122
    117123    BMessage done(kMsgSudokuGenerated);
     
    138144
    139145
    140146SudokuWindow::SudokuWindow()
    141     : BWindow(BRect(100, 100, 500, 520), "Sudoku", B_TITLED_WINDOW,
    142         B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE),
     147    : BWindow(BRect(100, 100, 500, 520), B_TRANSLATE("Sudoku"),
     148    B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE),
    143149    fGenerator(NULL),
    144150    fStoredState(NULL),
    145151    fExportFormat(kExportAsText)
     
    189195    // add menu
    190196
    191197    // "File" menu
    192     BMenu* menu = new BMenu("File");
    193     fNewMenu = new BMenu("New");
     198    BMenu* menu = new BMenu(B_TRANSLATE("File"));
     199    fNewMenu = new BMenu(B_TRANSLATE("New"));
    194200    menu->AddItem(new BMenuItem(fNewMenu, new BMessage(kMsgGenerateSudoku)));
    195201    fNewMenu->Superitem()->SetShortcut('N', B_COMMAND_KEY);
    196202
    197203    BMessage* message = new BMessage(kMsgGenerateSudoku);
    198204    message->AddInt32("level", kEasyLevel);
    199     fNewMenu->AddItem(new BMenuItem("Easy", message));
     205    fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Easy"), message));
    200206    message = new BMessage(kMsgGenerateSudoku);
    201207    message->AddInt32("level", kAdvancedLevel);
    202     fNewMenu->AddItem(new BMenuItem("Advanced", message));
     208    fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Advanced"), message));
    203209    message = new BMessage(kMsgGenerateSudoku);
    204210    message->AddInt32("level", kHardLevel);
    205     fNewMenu->AddItem(new BMenuItem("Hard", message));
     211    fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Hard"), message));
    206212
    207213    fNewMenu->AddSeparatorItem();
    208     fNewMenu->AddItem(new BMenuItem("Blank", new BMessage(kMsgNewBlank)));
     214    fNewMenu->AddItem(new BMenuItem(B_TRANSLATE("Blank"),
     215        new BMessage(kMsgNewBlank)));
    209216
    210     menu->AddItem(new BMenuItem("Start again", new BMessage(kMsgStartAgain)));
     217    menu->AddItem(new BMenuItem(B_TRANSLATE("Start again"),
     218        new BMessage(kMsgStartAgain)));
    211219    menu->AddSeparatorItem();
    212220    BMenu* recentsMenu = BRecentFilesList::NewFileListMenu(
    213         "Open file" B_UTF8_ELLIPSIS, NULL, NULL, this, 10, false, NULL,
    214         kSignature);
     221        B_TRANSLATE("Open file" B_UTF8_ELLIPSIS), NULL, NULL, this, 10, false,
     222        NULL, kSignature);
    215223    BMenuItem *item;
    216224    menu->AddItem(item = new BMenuItem(recentsMenu,
    217225        new BMessage(kMsgOpenFilePanel)));
     
    219227
    220228    menu->AddSeparatorItem();
    221229
    222     BMenu* subMenu = new BMenu("Export as" B_UTF8_ELLIPSIS);
     230    BMenu* subMenu = new BMenu(B_TRANSLATE("Export as" B_UTF8_ELLIPSIS));
    223231    message = new BMessage(kMsgExportAs);
    224232    message->AddInt32("as", kExportAsText);
    225     subMenu->AddItem(new BMenuItem("Text", message));
     233    subMenu->AddItem(new BMenuItem(B_TRANSLATE("Text"), message));
    226234    message= new BMessage(kMsgExportAs);
    227235    message->AddInt32("as", kExportAsHTML);
    228     subMenu->AddItem(new BMenuItem("HTML", message));
     236    subMenu->AddItem(new BMenuItem(B_TRANSLATE("HTML"), message));
    229237    menu->AddItem(subMenu);
    230238
    231     menu->AddItem(item = new BMenuItem("Copy", new BMessage(B_COPY), 'C'));
     239    menu->AddItem(item = new BMenuItem(B_TRANSLATE("Copy"),
     240        new BMessage(B_COPY), 'C'));
    232241
    233242    menu->AddSeparatorItem();
    234243
    235     menu->AddItem(item = new BMenuItem("About Sudoku" B_UTF8_ELLIPSIS,
     244    menu->AddItem(item = new BMenuItem(
     245        B_TRANSLATE("About Sudoku" B_UTF8_ELLIPSIS),
    236246        new BMessage(B_ABOUT_REQUESTED)));
    237247    menu->AddSeparatorItem();
    238248
    239     menu->AddItem(new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q'));
     249    menu->AddItem(new BMenuItem(B_TRANSLATE("Quit"),
     250        new BMessage(B_QUIT_REQUESTED), 'Q'));
    240251    menu->SetTargetForItems(this);
    241252    item->SetTarget(be_app);
    242253    menuBar->AddItem(menu);
    243254
    244255    // "View" menu
    245     menu = new BMenu("View");
    246     menu->AddItem(item = new BMenuItem("Mark invalid values",
     256    menu = new BMenu(B_TRANSLATE("View"));
     257    menu->AddItem(item = new BMenuItem(B_TRANSLATE("Mark invalid values"),
    247258        new BMessage(kMsgMarkInvalid)));
    248259    if ((fSudokuView->HintFlags() & kMarkInvalid) != 0)
    249260        item->SetMarked(true);
    250     menu->AddItem(item = new BMenuItem("Mark valid hints",
     261    menu->AddItem(item = new BMenuItem(B_TRANSLATE("Mark valid hints"),
    251262        new BMessage(kMsgMarkValidHints)));
    252263    if ((fSudokuView->HintFlags() & kMarkValidHints) != 0)
    253264        item->SetMarked(true);
     
    255266    menuBar->AddItem(menu);
    256267
    257268    // "Help" menu
    258     menu = new BMenu("Help");
    259     menu->AddItem(fUndoItem = new BMenuItem("Undo", new BMessage(B_UNDO), 'Z'));
     269    menu = new BMenu(B_TRANSLATE("Help"));
     270    menu->AddItem(fUndoItem = new BMenuItem(B_TRANSLATE("Undo"),
     271        new BMessage(B_UNDO), 'Z'));
    260272    fUndoItem->SetEnabled(false);
    261     menu->AddItem(fRedoItem = new BMenuItem("Redo", new BMessage(B_REDO), 'Z',
     273    menu->AddItem(fRedoItem = new BMenuItem(B_TRANSLATE("Redo"),
     274        new BMessage(B_REDO), 'Z',
    262275        B_SHIFT_KEY));
    263276    fRedoItem->SetEnabled(false);
    264277    menu->AddSeparatorItem();
    265278
    266     menu->AddItem(new BMenuItem("Snapshot current",
     279    menu->AddItem(new BMenuItem(B_TRANSLATE("Snapshot current"),
    267280        new BMessage(kMsgStoreState)));
    268     menu->AddItem(fRestoreStateItem = new BMenuItem("Restore snapshot",
     281    menu->AddItem(fRestoreStateItem = new BMenuItem(
     282        B_TRANSLATE("Restore snapshot"),
    269283        new BMessage(kMsgRestoreState)));
    270284    fRestoreStateItem->SetEnabled(fStoredState != NULL);
    271285    menu->AddSeparatorItem();
    272286
    273     menu->AddItem(new BMenuItem("Solve", new BMessage(kMsgSolveSudoku)));
    274     menu->AddItem(new BMenuItem("Solve single field",
     287    menu->AddItem(new BMenuItem(B_TRANSLATE("Solve"),
     288        new BMessage(kMsgSolveSudoku)));
     289    menu->AddItem(new BMenuItem(B_TRANSLATE("Solve single field"),
    275290        new BMessage(kMsgSolveSingle)));
    276291    menu->SetTargetForItems(fSudokuView);
    277292    menuBar->AddItem(menu);
     
    396411        char buffer[1024];
    397412        if (hasRef) {
    398413            snprintf(buffer, sizeof(buffer),
    399                 "Could not open \"%s\":\n"
    400                 "%s", ref.name, strerror(status));
     414                B_TRANSLATE("Could not open \"%s\":\n%s\n"), ref.name,
     415                strerror(status));
    401416        } else {
    402             snprintf(buffer, sizeof(buffer), "Could not set Sudoku:\n%s",
     417            snprintf(buffer, sizeof(buffer),
     418                B_TRANSLATE("Could not set Sudoku:\n%s\n"),
    403419                strerror(status));
    404420        }
    405421
    406         (new BAlert("Sudoku request",
    407             buffer, "OK", NULL, NULL,
     422        (new BAlert(B_TRANSLATE("Sudoku request"),
     423            buffer, B_TRANSLATE("OK"), NULL, NULL,
    408424            B_WIDTH_AS_USUAL, B_STOP_ALERT))->Go();
    409425    }
    410426}
     
    546562        }
    547563
    548564        case kMsgSudokuSolved:
    549             (new BAlert("Sudoku request",
    550                 "Sudoku solved - congratulations!", "OK", NULL, NULL,
     565            (new BAlert(B_TRANSLATE("Sudoku request"),
     566                B_TRANSLATE("Sudoku solved - congratulations!\n"),
     567                B_TRANSLATE("OK"), NULL, NULL,
    551568                B_WIDTH_AS_USUAL, B_IDEA_ALERT))->Go();
    552569            break;
    553570
  • src/apps/sudoku/SudokuView.cpp

     
    1818#include <Application.h>
    1919#include <Beep.h>
    2020#include <Bitmap.h>
     21#include <Catalog.h>
    2122#include <Clipboard.h>
    2223#include <DataIO.h>
    2324#include <Dragger.h>
     
    2829#include <String.h>
    2930
    3031
     32#undef B_TRANSLATE_CONTEXT
     33#define B_TRANSLATE_CONTEXT "SudokuView"
     34
    3135const uint32 kMsgCheckSolved = 'chks';
    3236
    3337const uint32 kStrongLineSize = 2;
     
    10341038            solver.SetTo(fField);
    10351039            bigtime_t start = system_time();
    10361040            solver.ComputeSolutions();
    1037             printf("found %ld solutions in %g msecs\n",
     1041            printf(
     1042                B_TRANSLATE_WITH_CONTEXT("found %ld solutions in %g msecs\n",
     1043                "When Sudoku is launched from a Terminal window, this message "
     1044                "is shown there."),
    10381045                solver.CountSolutions(), (system_time() - start) / 1000.0);
    10391046            if (solver.CountSolutions() > 0) {
    10401047                _PushUndo();
     
    10561063            solver.SetTo(fField);
    10571064            bigtime_t start = system_time();
    10581065            solver.ComputeSolutions();
    1059             printf("found %ld solutions in %g msecs\n",
     1066            printf(
     1067                B_TRANSLATE_WITH_CONTEXT("found %ld solutions in %g msecs\n",
     1068                "When Sudoku is launched from a Terminal window, this message "
     1069                "is shown there."),
    10601070                solver.CountSolutions(), (system_time() - start) / 1000.0);
    10611071            if (solver.CountSolutions() > 0) {
    10621072                _PushUndo();
  • src/apps/sudoku/Sudoku.cpp

     
    1212
    1313#include <Alert.h>
    1414#include <Application.h>
     15#include <Catalog.h>
    1516#include <TextView.h>
    1617
     18#undef B_TRANSLATE_CONTEXT
     19#define B_TRANSLATE_CONTEXT "Sudoku"
    1720
    1821const char* kSignature = "application/x-vnd.Haiku-Sudoku";
    1922
     
    6164void
    6265Sudoku::DisplayAbout()
    6366{
    64     BAlert *alert = new BAlert("about", "Sudoku\n"
     67    BAlert *alert = new BAlert(B_TRANSLATE("About"), B_TRANSLATE("Sudoku\n"
    6568        "\twritten by Axel Dörfler\n"
    66         "\tCopyright 2007, Haiku Inc.\n", "OK");
     69        "\tCopyright 2007, Haiku Inc.\n"), B_TRANSLATE("OK"));
    6770    BTextView *view = alert->TextView();
    6871    BFont font;
    6972
     
    7275    view->GetFont(&font);
    7376    font.SetSize(18);
    7477    font.SetFace(B_BOLD_FACE);
    75     view->SetFontAndColor(0, 6, &font);
    76 
     78    view->SetFontAndColor(0, strlen(B_TRANSLATE("Sudoku")), &font);
     79   
     80    alert->SetShortcut(0, B_ESCAPE);
    7781    alert->Go();
    7882}
    7983
  • src/apps/sudoku/SudokuGenerator.cpp

     
    1010#include "SudokuField.h"
    1111#include "SudokuSolver.h"
    1212
     13#include <Catalog.h>
     14
    1315#include <stdio.h>
    1416#include <stdlib.h>
    1517#include <string.h>
    1618
     19#undef B_TRANSLATE_CONTEXT
     20#define B_TRANSLATE_CONTEXT "SudokuGenerator"
     21
    1722SudokuGenerator::SudokuGenerator()
    1823{
    1924}
     
    5459
    5560    SudokuField field(target->BlockSize());
    5661    uint32 inputCount = field.Size() * field.Size() / 3;
    57     _Progress(progress, "Creating solvable field", 5.f);
     62    _Progress(progress, B_TRANSLATE("Creating solvable field"), 5.f);
    5863
    5964    while (!*quit) {
    6065        field.Reset();
     
    107112    bool tried[field.Size() * field.Size()];
    108113    int32 tries = field.Size() * field.Size() * 3 / 4;
    109114    memset(tried, 0, sizeof(tried));
    110     _Progress(progress, "Searching for removable values", 30.f);
     115    _Progress(progress, B_TRANSLATE("Searching for removable values"), 30.f);
    111116
    112117    while (!*quit && removeCount > 0 && tries-- > 0) {
    113118        SudokuField copy(field);
     
    132137        return;
    133138
    134139    if (tries <= 0) {
    135         puts("check all remove");
     140        puts(B_TRANSLATE_WITH_CONTEXT("check all remove",
     141            "When Sudoku is launched from a Terminal window, this message "
     142            "is shown there."));
    136143        for (uint32 y = 0; y < field.Size(); y++) {
    137144            for (uint32 x = 0; x < field.Size(); x++) {
    138145                if (tried[x + y * field.Size()])
     
    154161            if (removeCount <= 0 || *quit)
    155162                break;
    156163        }
    157         printf("  remove count = %ld\n", removeCount);
     164        printf(B_TRANSLATE_WITH_CONTEXT("  remove count = %ld\n",
     165            "When Sudoku is launched from a Terminal window, this message "
     166            "is shown there."), removeCount);
    158167    }
    159168
    160169    // set the remaining values to be initial values
  • src/apps/sudoku/Jamfile

     
    1212    SudokuView.cpp
    1313    SudokuWindow.cpp
    1414
    15     : be tracker $(TARGET_LIBSTDC++)
     15    : be tracker $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSTDC++)
    1616    : Sudoku.rdef
    1717    ;
     18   
     19DoCatalogs Sudoku :
     20    x-vnd.Haiku-Sudoku
     21    :
     22    Sudoku.cpp
     23    ProgressWindow.cpp
     24    SudokuGenerator.cpp
     25    SudokuWindow.cpp
     26;
     27
     28
     29AddCatalogEntryAttribute Sudoku
     30    :
     31    x-vnd.Haiku-Sudoku:SudokuWindow:Sudoku
     32;
  • src/apps/sudoku/ProgressWindow.cpp

     
    88
    99#include <Autolock.h>
    1010#include <Button.h>
     11#include <Catalog.h>
    1112#include <MessageRunner.h>
    1213#include <Screen.h>
    1314#include <StatusBar.h>
     
    1516#include <stdio.h>
    1617
    1718
     19#undef B_TRANSLATE_CONTEXT
     20#define B_TRANSLATE_CONTEXT "ProgressWindow"
     21
    1822static const uint32 kMsgShow = 'show';
    1923
    2024
    2125ProgressWindow::ProgressWindow(BWindow* referenceWindow,
    2226        BMessage* abortMessage)
    23     : BWindow(BRect(0, 0, 250, 100), "Progress monitor",
     27    : BWindow(BRect(0, 0, 250, 100), B_TRANSLATE("Progress monitor"),
    2428        B_MODAL_WINDOW_LOOK, B_FLOATING_APP_WINDOW_FEEL,
    2529        B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS),
    2630    fRunner(NULL)
     
    4145
    4246    if (abortMessage != NULL && referenceWindow) {
    4347        rect.top += height + 8;
    44         BButton* button = new BButton(rect, "abort", "Abort",
     48        BButton* button = new BButton(rect, "abort", B_TRANSLATE("Abort"),
    4549            abortMessage);
    4650        button->ResizeToPreferred();
    4751        button->MoveBy((rect.Width() - button->Bounds().Width()) / 2, 0);