diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-01 20:15:48 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-31 14:50:38 +0000 |
| commit | 62f20457cf5ee85ac42dcd24b564ea68c1b3441d (patch) | |
| tree | e181b3fbe2d408451d6e18b371d753465d13758b /src/extension/prefdialog | |
| parent | Parameter: remove unused constructors (diff) | |
| download | inkscape-62f20457cf5ee85ac42dcd24b564ea68c1b3441d.tar.gz inkscape-62f20457cf5ee85ac42dcd24b564ea68c1b3441d.zip | |
Add function to get proper translation within context of Parameter
Diffstat (limited to 'src/extension/prefdialog')
| -rw-r--r-- | src/extension/prefdialog/parameter-description.cpp | 7 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter-notebook.cpp | 17 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter-notebook.h | 2 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter-optiongroup.cpp | 7 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter-string.cpp | 7 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter.cpp | 23 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter.h | 4 |
7 files changed, 33 insertions, 34 deletions
diff --git a/src/extension/prefdialog/parameter-description.cpp b/src/extension/prefdialog/parameter-description.cpp index 3ceea7665..7ab607a54 100644 --- a/src/extension/prefdialog/parameter-description.cpp +++ b/src/extension/prefdialog/parameter-description.cpp @@ -10,7 +10,6 @@ #include <gtkmm/box.h> #include <gtkmm/label.h> -#include <glibmm/i18n.h> #include <glibmm/markup.h> #include <glibmm/regex.h> @@ -49,11 +48,7 @@ ParamDescription::ParamDescription(Inkscape::XML::Node *xml, Inkscape::Extension // translate value if (!_value.empty()) { if (_translatable != NO) { // translate unless explicitly marked untranslatable - if (_context) { - _value = g_dpgettext2(nullptr, _context, _value.c_str()); - } else { - _value = _(_value.c_str()); - } + _value = get_translation(_value.c_str()); } } diff --git a/src/extension/prefdialog/parameter-notebook.cpp b/src/extension/prefdialog/parameter-notebook.cpp index 6e733a4b4..db4120d9e 100644 --- a/src/extension/prefdialog/parameter-notebook.cpp +++ b/src/extension/prefdialog/parameter-notebook.cpp @@ -20,7 +20,6 @@ #include <gtkmm/spinbutton.h> #include <gtkmm/notebook.h> -#include <glibmm/i18n.h> #include <xml/node.h> @@ -171,7 +170,7 @@ ParamNotebook::ParamNotebook(Inkscape::XML::Node *xml, Inkscape::Extension::Exte if (_value.empty()) { if (!pages.empty()) { - _value = pages[0]->name(); + _value = pages[0]->_name; } } } @@ -202,7 +201,7 @@ const Glib::ustring& ParamNotebook::set(const int in, SPDocument * /*doc*/, Inks ParamNotebookPage *page = pages[i]; if (page) { - _value = page->name(); + _value = page->_name; gchar *pref_name = this->pref_name(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -306,9 +305,17 @@ Gtk::Widget *ParamNotebook::get_widget(SPDocument *doc, Inkscape::XML::Node *nod int selected_page = -1; for (auto page : pages) { current_page++; + Gtk::Widget *page_widget = page->get_widget(doc, node, changeSignal); - notebook->append_page(*page_widget, _(page->get_text())); - if (_value == page->name()) { + + Glib::ustring page_text = page->_text; + if (_translatable != NO) { // translate unless explicitly marked untranslatable + page_text = page->get_translation(page_text.c_str()); + } + + notebook->append_page(*page_widget, page_text); + + if (_value == page->_name) { selected_page = current_page; } } diff --git a/src/extension/prefdialog/parameter-notebook.h b/src/extension/prefdialog/parameter-notebook.h index 8f6243fc8..303f5d2ce 100644 --- a/src/extension/prefdialog/parameter-notebook.h +++ b/src/extension/prefdialog/parameter-notebook.h @@ -44,11 +44,11 @@ private: * A class to represent the pages of a notebook parameter of an extension. */ class ParamNotebookPage : public Parameter { + friend class ParamNotebook; private: /** A table to store the parameters for this page. * This only gets created if there are parameters on this page */ std::vector<Parameter *> parameters; - public: ParamNotebookPage(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext); ~ParamNotebookPage() override; diff --git a/src/extension/prefdialog/parameter-optiongroup.cpp b/src/extension/prefdialog/parameter-optiongroup.cpp index 4fa43d44c..1e3612f35 100644 --- a/src/extension/prefdialog/parameter-optiongroup.cpp +++ b/src/extension/prefdialog/parameter-optiongroup.cpp @@ -20,7 +20,6 @@ #include <gtkmm/box.h> #include <gtkmm/comboboxtext.h> #include <gtkmm/radiobutton.h> -#include <glibmm/i18n.h> #include "xml/node.h" #include "extension/extension.h" @@ -60,11 +59,7 @@ ParamOptionGroup::ParamOptionGroup(Inkscape::XML::Node *xml, Inkscape::Extension } if (text) { if (_translatable != NO) { // translate unless explicitly marked untranslatable - if (_context) { - newtext = g_dpgettext2(nullptr, _context, text); - } else { - newtext = _(text); - } + newtext = get_translation(text); } else { newtext = text; } diff --git a/src/extension/prefdialog/parameter-string.cpp b/src/extension/prefdialog/parameter-string.cpp index d93102a20..96ba5c4fa 100644 --- a/src/extension/prefdialog/parameter-string.cpp +++ b/src/extension/prefdialog/parameter-string.cpp @@ -18,7 +18,6 @@ #include "xml/node.h" #include "extension/extension.h" #include "preferences.h" -#include <glibmm/i18n.h> namespace Inkscape { namespace Extension { @@ -44,11 +43,7 @@ ParamString::ParamString(Inkscape::XML::Node *xml, Inkscape::Extension::Extensio // translate value if (!_value.empty()) { if (_translatable == YES) { // translate only if explicitly marked translatable - if (_context) { - _value = g_dpgettext2(nullptr, _context, _value.c_str()); - } else { - _value = _(_value.c_str()); - } + _value = get_translation(_value.c_str()); } } diff --git a/src/extension/prefdialog/parameter.cpp b/src/extension/prefdialog/parameter.cpp index 2bf83f359..18d2a40ec 100644 --- a/src/extension/prefdialog/parameter.cpp +++ b/src/extension/prefdialog/parameter.cpp @@ -229,11 +229,7 @@ Parameter::Parameter (Inkscape::XML::Node *in_repr, Inkscape::Extension::Extensi } if (gui_text) { if (_translatable != NO) { // translate unless explicitly marked untranslatable - if (_context) { - gui_text = g_dpgettext2(nullptr, context, gui_text); - } else { - gui_text = _(gui_text); - } + gui_text = get_translation(gui_text); } _text = g_strdup(gui_text); } @@ -245,11 +241,7 @@ Parameter::Parameter (Inkscape::XML::Node *in_repr, Inkscape::Extension::Extensi } if (gui_description) { if (_translatable != NO) { // translate unless explicitly marked untranslatable - if (_context) { - gui_description = g_dpgettext2(nullptr, context, gui_description); - } else { - gui_description = _(gui_description); - } + gui_description = get_translation(gui_description); } _description = g_strdup(gui_description); } @@ -331,6 +323,17 @@ Parameter *Parameter::get_param(const gchar */*name*/) return nullptr; } + +const char *Parameter::get_translation(const char* msgid) { + // TODO: translation domain + + if (_context) { + return g_dpgettext2(nullptr, _context, msgid); + } else { + return _(msgid); + } +} + Glib::ustring const extension_pref_root = "/extensions/"; } // namespace Extension diff --git a/src/extension/prefdialog/parameter.h b/src/extension/prefdialog/parameter.h index af37a0ba6..e9dbd6efc 100644 --- a/src/extension/prefdialog/parameter.h +++ b/src/extension/prefdialog/parameter.h @@ -208,6 +208,10 @@ protected: * Build the name to write the parameter from the extension's ID and the name of this parameter. */ gchar *pref_name() const; + + /** gets the gettext translation for msgid + * Handles translation domain of the extension and message context of the parameter internally */ + const char *get_translation(const char* msgid); }; } // namespace Extension |
