void OnAbout(wxCommandEvent& event);
void OnPlay(wxCommandEvent& event);
void OnOpen(wxCommandEvent& event);
+ void OnTest1(wxCommandEvent& event);
+ void OnTest2(wxCommandEvent& event);
+ void OnTest3(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
// ID for the menu commands
enum
{
- INTERNAT_QUIT = 1,
- INTERNAT_TEXT,
+ INTERNAT_TEXT = wxID_HIGHEST + 1,
INTERNAT_TEST,
+ INTERNAT_TEST_1,
+ INTERNAT_TEST_2,
+ INTERNAT_TEST_3,
INTERNAT_OPEN
};
// ----------------------------------------------------------------------------
-// wxWindows macros
+// wxWidgets macros
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
- EVT_MENU(INTERNAT_QUIT, MyFrame::OnQuit)
+ EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(INTERNAT_TEST, MyFrame::OnPlay)
EVT_MENU(INTERNAT_OPEN, MyFrame::OnOpen)
+ EVT_MENU(INTERNAT_TEST_1, MyFrame::OnTest1)
+ EVT_MENU(INTERNAT_TEST_2, MyFrame::OnTest2)
+ EVT_MENU(INTERNAT_TEST_3, MyFrame::OnTest3)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
wxLANGUAGE_FRENCH,
wxLANGUAGE_GERMAN,
wxLANGUAGE_RUSSIAN,
-#if wxUSE_UNICODE
+ wxLANGUAGE_BULGARIAN,
+ wxLANGUAGE_CZECH,
+ wxLANGUAGE_POLISH,
+ wxLANGUAGE_SWEDISH,
+#if wxUSE_UNICODE || defined(__WXMOTIF__)
wxLANGUAGE_JAPANESE,
+#endif
+#if wxUSE_UNICODE
wxLANGUAGE_GEORGIAN,
#endif
wxLANGUAGE_ENGLISH,
_T("French"),
_T("German"),
_T("Russian"),
-#if wxUSE_UNICODE
+ _T("Bulgarian"),
+ _T("Czech"),
+ _T("Polish"),
+ _T("Swedish"),
+#if wxUSE_UNICODE || defined(__WXMOTIF__)
_T("Japanese"),
- _T("Georgian (no translation)"),
+#endif
+#if wxUSE_UNICODE
+ _T("Georgian"),
#endif
_T("English"),
_T("English (U.S.)")
lng = wxGetSingleChoiceIndex
(
_T("Please choose language:"),
- _T("Language"),
+ _T("Language"),
WXSIZEOF(langNames),
langNames
);
if ( lng != -1 )
m_locale.Init(langIds[lng]);
+ // normally this wouldn't be necessary as the catalog files would be found
+ // in the default locations, but under Windows then the program is not
+ // installed the catalogs are in the parent directory (because the binary
+ // is in a subdirectory of samples/internat) where we wouldn't find them by
+ // default
+ wxLocale::AddCatalogLookupPathPrefix(wxT("."));
+ wxLocale::AddCatalogLookupPathPrefix(wxT(".."));
// Initialize the catalogs we'll be using
m_locale.AddCatalog(wxT("internat"));
wxMenu *file_menu = new wxMenu;
file_menu->Append(wxID_ABOUT, _("&About..."));
file_menu->AppendSeparator();
- file_menu->Append(INTERNAT_QUIT, _("E&xit"));
+ file_menu->Append(wxID_EXIT, _("E&xit"));
wxMenu *test_menu = new wxMenu;
test_menu->Append(INTERNAT_OPEN, _("&Open bogus file"));
test_menu->Append(INTERNAT_TEST, _("&Play a game"));
+ test_menu->AppendSeparator();
+ test_menu->Append(INTERNAT_TEST_1, _("&1 _() (gettext)"));
+ test_menu->Append(INTERNAT_TEST_2, _("&2 _N() (ngettext)"));
+ test_menu->Append(INTERNAT_TEST_3, _("&3 wxTRANSLATE() (gettext_noop)"));
wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, _("&File"));
frame->SetMenuBar(menu_bar);
// Show the frame
- frame->Show(TRUE);
+ frame->Show(true);
SetTopWindow(frame);
- return TRUE;
+ return true;
}
// ----------------------------------------------------------------------------
// main frame constructor
MyFrame::MyFrame(wxLocale& locale)
: wxFrame(NULL,
- -1,
- _("International wxWindows App"),
- wxPoint(50, 50),
- wxSize(350, 60)),
+ wxID_ANY,
+ _("International wxWidgets App")),
m_locale(locale)
{
// Empty
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
{
- Close(TRUE);
+ Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
wxString sysname = m_locale.GetSysName();
wxString canname = m_locale.GetCanonicalName();
- localeInfo.Printf(_("Language: %s\nSystem locale name: %s\nCanonical locale name: %s\n"),
+ localeInfo.Printf(_("Language: %s\nSystem locale name:\n%s\nCanonical locale name: %s\n"),
locale.c_str(), sysname.c_str(), canname.c_str() );
- wxMessageDialog
- (
- this,
- wxString(_("I18n sample\n(c) 1998, 1999 Vadim Zeitlin and Julian Smart"))
- + wxT("\n\n")
- + localeInfo,
- _("About Internat"),
- wxOK | wxICON_INFORMATION
- ).ShowModal();
+ wxMessageDialog dlg(
+ this,
+ wxString(_("I18n sample\n(c) 1998, 1999 Vadim Zeitlin and Julian Smart"))
+ + wxT("\n\n")
+ + localeInfo,
+ _("About Internat"),
+ wxOK | wxICON_INFORMATION
+ );
+ dlg.ShowModal();
}
void MyFrame::OnPlay(wxCommandEvent& WXUNUSED(event))
void MyFrame::OnOpen(wxCommandEvent&)
{
- // open a bogus file -- the error message should be also translated if you've
- // got wxstd.mo somewhere in the search path
+ // open a bogus file -- the error message should be also translated if
+ // you've got wxstd.mo somewhere in the search path
wxFile file(wxT("NOTEXIST.ING"));
}
+void MyFrame::OnTest1(wxCommandEvent& WXUNUSED(event))
+{
+ const wxChar* title = _("Testing _() (gettext)");
+ wxTextEntryDialog d(this, _("Please enter text to translate"),
+ title, wxTRANSLATE("default value"));
+ if (d.ShowModal() == wxID_OK)
+ {
+ wxString v = d.GetValue();
+ wxString s(title);
+ s << _T("\n") << v << _T(" -> ")
+ << wxGetTranslation(v.c_str()) << _T("\n");
+ wxMessageBox(s);
+ }
+}
+
+void MyFrame::OnTest2(wxCommandEvent& WXUNUSED(event))
+{
+ const wxChar* title = _("Testing _N() (ngettext)");
+ wxTextEntryDialog d(this,
+ _("Please enter range for plural forms of \"n files deleted\" phrase"),
+ title, _T("0-10"));
+ if (d.ShowModal() == wxID_OK)
+ {
+ int first, last;
+ wxSscanf(d.GetValue(), _T("%d-%d"), &first, &last);
+ wxString s(title);
+ s << _T("\n");
+ for (int n = first; n <= last; ++n)
+ {
+ s << n << _T(" ") <<
+ wxPLURAL("file deleted", "files deleted", n) <<
+ _T("\n");
+ }
+ wxMessageBox(s);
+ }
+}
+
+void MyFrame::OnTest3(wxCommandEvent& WXUNUSED(event))
+{
+ const wxChar* lines[] =
+ {
+ wxTRANSLATE("line 1"),
+ wxTRANSLATE("line 2"),
+ wxTRANSLATE("line 3"),
+ };
+ wxString s(_("Testing wxTRANSLATE() (gettext_noop)"));
+ s << _T("\n");
+ for (size_t i = 0; i < WXSIZEOF(lines); ++i)
+ {
+ s << lines[i] << _T(" -> ") << wxGetTranslation(lines[i]) << _T("\n");
+ }
+ wxMessageBox(s);
+}
+
+