#include "FileZilla.h"
#include "Options.h"
#include "settingsdialog.h"
#include "optionspage.h"
#include "optionspage_language.h"
#include "filezillaapp.h"
BEGIN_EVENT_TABLE(COptionsPageLanguage, COptionsPage)
END_EVENT_TABLE();
bool COptionsPageLanguage::LoadPage()
{
wxListBox* pListBox = XRCCTRL(*this, "ID_LANGUAGES", wxListBox);
if (!pListBox)
return false;
int language = wxGetApp().GetCurrentLanguage();
pListBox->Clear();
int n = pListBox->Append(_T("English"));
const wxLanguageInfo* pInfo = wxLocale::FindLanguageInfo(_T("en"));
if (pInfo && pInfo->Language == language)
pListBox->SetSelection(n);
wxString localesDir = wxGetApp().GetLocalesDir();
if (localesDir == _T("") || !wxDir::Exists(localesDir))
return true;
wxDir dir(localesDir);
wxString locale;
for (bool found = dir.GetFirst(&locale); found; found = dir.GetNext(&locale))
{
if (!wxFileName::FileExists(localesDir + locale + _T("/filezilla.mo")))
continue;
wxString name;
const wxLanguageInfo* pInfo = wxLocale::FindLanguageInfo(locale);
if (!pInfo)
continue;
if (pInfo->Description != _T(""))
name = pInfo->Description;
else
name = locale;
int n = pListBox->Append(name);
if (pInfo->Language == language)
pListBox->SetSelection(n);
}
return true;
}
bool COptionsPageLanguage::SavePage()
{
wxListBox* pListBox = XRCCTRL(*this, "ID_LANGUAGES", wxListBox);
if (pListBox->GetSelection() == wxNOT_FOUND)
return true;
const wxLanguageInfo* pInfo = wxLocale::FindLanguageInfo(pListBox->GetStringSelection());
if (!pInfo || !wxGetApp().SetLocale(pInfo->Language))
wxMessageBox(wxString::Format(_("Failed to set language to %s, using default system language"), pListBox->GetStringSelection().c_str()), _("Failed to change language"), wxICON_EXCLAMATION, this);
else
m_pOptions->SetOption(OPTION_LANGUAGE, pListBox->GetStringSelection());
return true;
}
bool COptionsPageLanguage::Validate()
{
return true;
}
syntax highlighted by Code2HTML, v. 0.9.1