Code: Select all
hideLabel = wxString::Format(_("Hide %s"), wxTheApp ? wxTheApp->GetAppDisplayName() : _("Application"));
m_appleMenu->Append( wxID_OSX_HIDE, hideLabel + "\tCtrl+H" );
m_appleMenu->Append( wxID_OSX_HIDEOTHERS, _("Hide Others")+"\tAlt+Ctrl+H" );
m_appleMenu->Append( wxID_OSX_SHOWALL, _("Show All") );
So, it would be good to change this fixed strings ("Hide" etc) in wxWidgets sources to use something like string resources that can be internationalized. For now i've patched somehow the code, this way:
Code: Select all
void MainDialog::OnActivate( wxActivateEvent& event )
{
#if defined(__WXMAC__) && !wxOSX_USE_CARBON
if(wxMenu * pAppleMenu=GetMenuBar()->m_rootMenu)
{
typedef struct
{
int idItem;
const wxChar *newText;
} tagTranslateMenuItem;
tagTranslateMenuItem aryTranslate[] = { { wxID_OSX_HIDE, wxT("Nascondi Ammortamenti\tCtrl+H") },
{ wxID_OSX_HIDEOTHERS, wxT("Nascondi altre\tAlt+Ctrl+H")} ,
{ wxID_OSX_SHOWALL, wxT("Mostra tutte") },
{ wxApp::s_macExitMenuItemId, wxT("Esci da Ammortamenti\tCtrl+Q") }
};
for(size_t i=0; i<ARRAY_COUNT(aryTranslate); i++)
{
// GetMenuBar()->SetLabel(aryTranslate[i].idItem, aryTranslate[i].newText);
if(wxMenuItem *pMenuItem = pAppleMenu->FindItem(aryTranslate[i].idItem))
{
pMenuItem->SetItemLabel(aryTranslate[i].newText);
}
}
}
#endif
event.Skip();
}