When accessing the localized web pages provided by Prusa Research,

only those language codes are now passed to the Prusa Research
web server, which are currently supported.
For example, there is no web page for "en_UK", the "en_UK" code will be
translated to "en_US".
This commit is contained in:
bubnikv 2019-07-29 17:55:50 +02:00
parent 3b21c64c2e
commit 3d9df02f5f
3 changed files with 33 additions and 4 deletions

View File

@ -974,9 +974,36 @@ int GUI_App::extruders_edited_cnt() const
preset.config.option<ConfigOptionFloats>("nozzle_diameter")->values.size(); preset.config.option<ConfigOptionFloats>("nozzle_diameter")->values.size();
} }
wxString GUI_App::current_language_code_safe() const
{
// Translate the language code to a code, for which Prusa Research maintains translations.
wxString language_code = this->current_language_code();
size_t idx_underscore = language_code.find(language_code);
if (idx_underscore != wxString::npos)
language_code = language_code.substr(0, idx_underscore);
const std::map<wxString, wxString> mapping {
{ "cs", "cs_CZ", },
{ "de", "de_DE", },
{ "es", "es_ES", },
{ "fr", "fr_FR", },
{ "it", "it_IT", },
{ "ja", "ja_JP", },
{ "ko", "ko_KR", },
{ "pl", "pl_PL", },
{ "uk", "uk_UA", },
{ "zh", "zh_CN", },
};
auto it = mapping.find(language_code);
if (it != mapping.end())
language_code = it->second;
else
language_code = "en_US";
return language_code;
}
void GUI_App::open_web_page_localized(const std::string &http_address) void GUI_App::open_web_page_localized(const std::string &http_address)
{ {
wxLaunchDefaultBrowser(http_address + "&lng=" + this->current_language_code()); wxLaunchDefaultBrowser(http_address + "&lng=" + this->current_language_code_safe());
} }
void GUI_App::window_pos_save(wxTopLevelWindow* window, const std::string &name) void GUI_App::window_pos_save(wxTopLevelWindow* window, const std::string &name)

View File

@ -143,7 +143,9 @@ public:
bool checked_tab(Tab* tab); bool checked_tab(Tab* tab);
void load_current_presets(); void load_current_presets();
wxString current_language_code() { return m_wxLocale != nullptr ? m_wxLocale->GetCanonicalName() : wxString("en_US"); } wxString current_language_code() const { return m_wxLocale != nullptr ? m_wxLocale->GetCanonicalName() : wxString("en_US"); }
// Translate the language code to a code, for which Prusa Research maintains translations. Defaults to "en_US".
wxString current_language_code_safe() const;
virtual bool OnExceptionInMainLoop(); virtual bool OnExceptionInMainLoop();

View File

@ -55,7 +55,7 @@ MsgUpdateSlic3r::MsgUpdateSlic3r(const Semver &ver_current, const Semver &ver_on
auto *link = new wxHyperlinkCtrl(this, wxID_ANY, _(L("Changelog && Download")), url_wx); auto *link = new wxHyperlinkCtrl(this, wxID_ANY, _(L("Changelog && Download")), url_wx);
content_sizer->Add(link); content_sizer->Add(link);
} else { } else {
const auto lang_code = wxGetApp().current_language_code().ToStdString(); const auto lang_code = wxGetApp().current_language_code_safe().ToStdString();
const std::string url_log = (boost::format(URL_CHANGELOG) % lang_code).str(); const std::string url_log = (boost::format(URL_CHANGELOG) % lang_code).str();
const wxString url_log_wx = from_u8(url_log); const wxString url_log_wx = from_u8(url_log);
@ -100,7 +100,7 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector<Update> &updates) :
content_sizer->Add(text); content_sizer->Add(text);
content_sizer->AddSpacer(VERT_SPACING); content_sizer->AddSpacer(VERT_SPACING);
const auto lang_code = wxGetApp().current_language_code().ToStdString(); const auto lang_code = wxGetApp().current_language_code_safe().ToStdString();
auto *versions = new wxBoxSizer(wxVERTICAL); auto *versions = new wxBoxSizer(wxVERTICAL);
for (const auto &update : updates) { for (const auto &update : updates) {