INTERNAT_OPEN
};
+// language data
+static const wxLanguage langIds[] =
+{
+ wxLANGUAGE_DEFAULT,
+ wxLANGUAGE_FRENCH,
+ wxLANGUAGE_GERMAN,
+ wxLANGUAGE_RUSSIAN,
+ wxLANGUAGE_BULGARIAN,
+ wxLANGUAGE_CZECH,
+ wxLANGUAGE_POLISH,
+ wxLANGUAGE_SWEDISH,
+#if wxUSE_UNICODE || defined(__WXMOTIF__)
+ wxLANGUAGE_JAPANESE,
+#endif
+#if wxUSE_UNICODE
+ wxLANGUAGE_GEORGIAN,
+ wxLANGUAGE_ENGLISH,
+ wxLANGUAGE_ENGLISH_US
+#endif
+};
+
+// note that it makes no sense to translate these strings, they are
+// shown before we set the locale anyhow
+const wxString langNames[] =
+{
+ _T("System default"),
+ _T("French"),
+ _T("German"),
+ _T("Russian"),
+ _T("Bulgarian"),
+ _T("Czech"),
+ _T("Polish"),
+ _T("Swedish"),
+#if wxUSE_UNICODE || defined(__WXMOTIF__)
+ _T("Japanese"),
+#endif
+#if wxUSE_UNICODE
+ _T("Georgian"),
+ _T("English"),
+ _T("English (U.S.)")
+#endif
+};
+
+// the arrays must be in sync
+wxCOMPILE_TIME_ASSERT( WXSIZEOF(langNames) == WXSIZEOF(langIds),
+ LangArraysMismatch );
+
// ----------------------------------------------------------------------------
// wxWidgets macros
// ----------------------------------------------------------------------------
tmp.ToLong(&lng);
}
- static const wxLanguage langIds[] =
- {
- wxLANGUAGE_DEFAULT,
- wxLANGUAGE_FRENCH,
- wxLANGUAGE_GERMAN,
- wxLANGUAGE_RUSSIAN,
- wxLANGUAGE_BULGARIAN,
- wxLANGUAGE_CZECH,
- wxLANGUAGE_POLISH,
-#if wxUSE_UNICODE
- wxLANGUAGE_JAPANESE,
- wxLANGUAGE_GEORGIAN,
-#endif
- wxLANGUAGE_ENGLISH,
- wxLANGUAGE_ENGLISH_US
- };
-
if ( lng == -1 )
{
- // note that it makes no sense to translate these strings, they are
- // shown before we set the locale anyhow
- const wxString langNames[] =
- {
- _T("System default"),
- _T("French"),
- _T("German"),
- _T("Russian"),
- _T("Bulgarian"),
- _T("Czech"),
- _T("Polish"),
-#if wxUSE_UNICODE
- _T("Japanese"),
- _T("Georgian"),
-#endif
- _T("English"),
- _T("English (U.S.)")
- };
-
- // the arrays should be in sync
- wxCOMPILE_TIME_ASSERT( WXSIZEOF(langNames) == WXSIZEOF(langIds),
- LangArraysMismatch );
-
lng = wxGetSingleChoiceIndex
(
_T("Please choose language:"),
}
if ( lng != -1 )
- m_locale.Init(langIds[lng]);
+ {
+ // don't use wxLOCALE_LOAD_DEFAULT flag so that Init() doesn't return
+ // false just because it failed to load wxstd catalog
+ if ( !m_locale.Init(langIds[lng], wxLOCALE_CONV_ENCODING) )
+ {
+ wxLogError(_T("This language is not supported by the system."));
+ return false;
+ }
+ }
+ // 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"));
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))
for (int n = first; n <= last; ++n)
{
s << n << _T(" ") <<
- wxGetTranslation(_T("file deleted"), _T("files deleted"), n) <<
+ wxPLURAL("file deleted", "files deleted", n) <<
_T("\n");
}
wxMessageBox(s);