summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-08-01 20:15:48 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-08-31 14:50:38 +0000
commit62f20457cf5ee85ac42dcd24b564ea68c1b3441d (patch)
treee181b3fbe2d408451d6e18b371d753465d13758b
parentParameter: remove unused constructors (diff)
downloadinkscape-62f20457cf5ee85ac42dcd24b564ea68c1b3441d.tar.gz
inkscape-62f20457cf5ee85ac42dcd24b564ea68c1b3441d.zip
Add function to get proper translation within context of Parameter
-rw-r--r--src/extension/prefdialog/parameter-description.cpp7
-rw-r--r--src/extension/prefdialog/parameter-notebook.cpp17
-rw-r--r--src/extension/prefdialog/parameter-notebook.h2
-rw-r--r--src/extension/prefdialog/parameter-optiongroup.cpp7
-rw-r--r--src/extension/prefdialog/parameter-string.cpp7
-rw-r--r--src/extension/prefdialog/parameter.cpp23
-rw-r--r--src/extension/prefdialog/parameter.h4
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