[gnome-builder/wip/tingping/gstyle-translations] gstyle: Add support for translations
- From: Patrick Griffis <pgriffis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/tingping/gstyle-translations] gstyle: Add support for translations
- Date: Fri, 22 Jul 2016 14:51:03 +0000 (UTC)
commit 9905fde6bd9150ca232b250355cd9e8742eb02fb
Author: Patrick Griffis <tingping tingping se>
Date: Thu Jul 21 20:14:34 2016 -0400
gstyle: Add support for translations
configure.ac | 2 +-
contrib/gstyle/Makefile.am | 5 ++
contrib/gstyle/check-palette.sh | 2 +-
contrib/gstyle/data/its/gstyle.its | 4 ++
contrib/gstyle/data/its/gstyle.loc | 6 ++
.../palette.xml => data/palettes/basic.gstyle.xml} | 2 +-
contrib/gstyle/data/palettes/palette.rng | 3 +
contrib/gstyle/gstyle-palette.c | 52 +++++++++++++++++---
.../basic.xml => tests/data/palette.gstyle.xml} | 0
contrib/gstyle/tests/test-gstyle-palette.c | 2 +-
.../data/{basic.xml => basic.gstyle.xml} | 22 ++++-----
.../color-picker/gb-color-picker-workbench-addin.c | 2 +-
plugins/color-picker/gb-color-picker.gresource.xml | 2 +-
po/Makevars | 5 ++-
po/POTFILES.in | 4 +-
po/POTFILES.skip | 2 +
16 files changed, 86 insertions(+), 29 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index ebe62c4..c896021 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,7 +58,7 @@ dnl ***********************************************************************
GETTEXT_PACKAGE=AC_PACKAGE_TARNAME
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [GETTEXT package name])
AC_SUBST(GETTEXT_PACKAGE)
-AM_GNU_GETTEXT_VERSION([0.19.7])
+AM_GNU_GETTEXT_VERSION([0.19.8])
AM_GNU_GETTEXT([external])
diff --git a/contrib/gstyle/Makefile.am b/contrib/gstyle/Makefile.am
index c7a8f5d..b8f6903 100644
--- a/contrib/gstyle/Makefile.am
+++ b/contrib/gstyle/Makefile.am
@@ -8,6 +8,11 @@ SUBDIRS = . tests
pkglibdir = $(libdir)/gnome-builder
pkglib_LTLIBRARIES = libgstyle-private.la
+#gettextitsdir = $(datadir)/gettext/its
+noinst_DATA = \
+ data/its/gstyle.its \
+ data/its/gstyle.loc
+
headersdir = $(includedir)/gnome-builder-@VERSION@/gstyle
headers_DATA = \
gstyle-animation.h \
diff --git a/contrib/gstyle/check-palette.sh b/contrib/gstyle/check-palette.sh
index 72fcdba..befb4fb 100755
--- a/contrib/gstyle/check-palette.sh
+++ b/contrib/gstyle/check-palette.sh
@@ -9,7 +9,7 @@ if [ $1 ]; then
files=$@
else
cd ./data/palettes
- files=*.xml
+ files=*.gstyle.xml
fi
for file in $files; do
diff --git a/contrib/gstyle/data/its/gstyle.its b/contrib/gstyle/data/its/gstyle.its
new file mode 100644
index 0000000..405c1eb
--- /dev/null
+++ b/contrib/gstyle/data/its/gstyle.its
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+ <its:translateRule selector="//palette/@_name" translate="yes"/>
+</its:rules>
diff --git a/contrib/gstyle/data/its/gstyle.loc b/contrib/gstyle/data/its/gstyle.loc
new file mode 100644
index 0000000..f742495
--- /dev/null
+++ b/contrib/gstyle/data/its/gstyle.loc
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<locatingRules>
+ <locatingRule name="GStyle" pattern="*.gstyle.xml">
+ <documentRule localName="palette" target="gstyle.its"/>
+ </locatingRule>
+</locatingRules>
diff --git a/contrib/gstyle/tests/data/palette.xml b/contrib/gstyle/data/palettes/basic.gstyle.xml
similarity index 97%
rename from contrib/gstyle/tests/data/palette.xml
rename to contrib/gstyle/data/palettes/basic.gstyle.xml
index f62c42d..f5a33eb 100644
--- a/contrib/gstyle/tests/data/palette.xml
+++ b/contrib/gstyle/data/palettes/basic.gstyle.xml
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
-<palette id="basic" _name="Basic">
+<palette id="basic" name="Basic">
<color name="color_hex6" value="#808080"/>
<color name="color_hex3" value="#1aF"/>
diff --git a/contrib/gstyle/data/palettes/palette.rng b/contrib/gstyle/data/palettes/palette.rng
index 6046745..dc5c5e2 100644
--- a/contrib/gstyle/data/palettes/palette.rng
+++ b/contrib/gstyle/data/palettes/palette.rng
@@ -106,6 +106,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<attribute name="_name"/>
</choice>
<optional>
+ <attribute name="gettext-domain"/>
+ </optional>
+ <optional>
<oneOrMore>
<element name="color">
<attribute name="name">
diff --git a/contrib/gstyle/gstyle-palette.c b/contrib/gstyle/gstyle-palette.c
index 0a927d0..9be9aef 100644
--- a/contrib/gstyle/gstyle-palette.c
+++ b/contrib/gstyle/gstyle-palette.c
@@ -38,6 +38,7 @@ struct _GstylePalette
GHashTable *color_names;
gchar *id;
gchar *name;
+ gchar *gettext_domain;
GFile *file;
};
@@ -57,6 +58,7 @@ enum {
PROP_FILE,
PROP_COLORS,
PROP_LEN,
+ PROP_DOMAIN,
N_PROPS
};
@@ -90,20 +92,27 @@ static GParamSpec *properties [N_PROPS];
static gboolean
gstyle_palette_xml_get_header (xmlTextReaderPtr reader,
gchar **id,
- gchar **name)
+ gchar **name,
+ gchar **domain)
{
g_assert (reader != NULL);
g_assert (id != NULL);
g_assert (name != NULL);
+ g_assert (domain != NULL);
- *id = *name = NULL;
+ *id = *name = *domain = NULL;
if (xmlTextReaderRead(reader) == 1 &&
xmlTextReaderNodeType (reader) == XML_READER_TYPE_ELEMENT &&
!g_strcmp0 (XML_TO_CHAR (xmlTextReaderConstName (reader)), "palette") &&
xmlTextReaderDepth (reader) == 0)
{
*id = strdup_and_xmlfree (xmlTextReaderGetAttribute (reader, CHAR_TO_XML ("id")));
- *name = strdup_and_xmlfree (xmlTextReaderGetAttribute (reader, CHAR_TO_XML ("_name")));
+ *name = strdup_and_xmlfree (xmlTextReaderGetAttribute (reader, CHAR_TO_XML ("name")));
+ if (*name == NULL)
+ {
+ *name = strdup_and_xmlfree (xmlTextReaderGetAttribute (reader, CHAR_TO_XML ("_name")));
+ *domain = strdup_and_xmlfree (xmlTextReaderGetAttribute (reader, CHAR_TO_XML ("gettext-domain")));
+ }
if (gstyle_str_empty0 (*id) || gstyle_utf8_is_spaces (*id))
{
g_warning ("Palette '%s'has an empty or NULL id\n", *name);
@@ -658,14 +667,16 @@ gstyle_palette_new_from_xml (GFile *file,
GstyleColor *color;
g_autofree gchar *id = NULL;
g_autofree gchar *name = NULL;
+ g_autofree gchar *domain = NULL;
xmlTextReaderSetErrorHandler (reader, gstyle_palette_error_cb, NULL);
if (xmlTextReaderRead(reader) &&
- gstyle_palette_xml_get_header (reader, &id, &name))
+ gstyle_palette_xml_get_header (reader, &id, &name, &domain))
{
palette = g_object_new (GSTYLE_TYPE_PALETTE,
"id", id,
+ "domain", domain,
"name", name,
"file", file,
NULL);
@@ -873,7 +884,13 @@ gstyle_palette_save_to_xml (GstylePalette *self,
id = gstyle_palette_get_id (self);
name = gstyle_palette_get_name (self);
xmlNewProp (palette_node, CHAR_TO_XML ("id"), CHAR_TO_XML (id));
- xmlNewProp (palette_node, CHAR_TO_XML ("_name"), CHAR_TO_XML (name));
+ if (self->gettext_domain)
+ {
+ xmlNewProp (palette_node, CHAR_TO_XML ("_name"), CHAR_TO_XML (name));
+ xmlNewProp (palette_node, CHAR_TO_XML ("gettext-domain"), CHAR_TO_XML (self->gettext_domain));
+ }
+ else
+ xmlNewProp (palette_node, CHAR_TO_XML ("name"), CHAR_TO_XML (name));
n_colors = gstyle_palette_get_len (self);
for (gint i = 0; i < n_colors; ++i)
@@ -969,7 +986,10 @@ gstyle_palette_get_name (GstylePalette *self)
{
g_return_val_if_fail (GSTYLE_IS_PALETTE (self), NULL);
- return self->name;
+ if (self->gettext_domain)
+ return g_dgettext (self->gettext_domain, self->name);
+ else
+ return self->name;
}
/**
@@ -1039,6 +1059,7 @@ gstyle_palette_finalize (GObject *object)
g_free (self->name);
g_free (self->id);
+ g_free (self->gettext_domain);
g_clear_object (&self->file);
G_OBJECT_CLASS (gstyle_palette_parent_class)->finalize (object);
@@ -1059,7 +1080,11 @@ gstyle_palette_get_property (GObject *object,
break;
case PROP_NAME:
- g_value_set_string (value, self->name);
+ g_value_set_string (value, gstyle_palette_get_name (self));
+ break;
+
+ case PROP_DOMAIN:
+ g_value_set_string (value, self->gettext_domain);
break;
case PROP_FILE:
@@ -1098,6 +1123,12 @@ gstyle_palette_set_property (GObject *object,
gstyle_palette_set_name (self, g_value_get_string (value));
break;
+ case PROP_DOMAIN:
+ g_free (self->gettext_domain);
+ self->gettext_domain = g_value_dup_string (value);
+ bind_textdomain_codeset (self->gettext_domain, "UTF-8");
+ break;
+
case PROP_FILE:
file = g_value_get_object (value);
self->file = file ? g_object_ref (file) : NULL;
@@ -1171,6 +1202,13 @@ gstyle_palette_class_init (GstylePaletteClass *klass)
NULL,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS));
+ properties [PROP_DOMAIN] =
+ g_param_spec_string ("domain",
+ "Gettext domain",
+ "The Gettext domain the file uses.",
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
properties [PROP_FILE] =
g_param_spec_object ("file",
"File",
diff --git a/contrib/gstyle/data/palettes/basic.xml b/contrib/gstyle/tests/data/palette.gstyle.xml
similarity index 100%
rename from contrib/gstyle/data/palettes/basic.xml
rename to contrib/gstyle/tests/data/palette.gstyle.xml
diff --git a/contrib/gstyle/tests/test-gstyle-palette.c b/contrib/gstyle/tests/test-gstyle-palette.c
index 2df7078..bdf93b5 100644
--- a/contrib/gstyle/tests/test-gstyle-palette.c
+++ b/contrib/gstyle/tests/test-gstyle-palette.c
@@ -55,7 +55,7 @@ test_palette (void)
GstylePalette *palette;
printf ("\n");
- palette = load_palette ("palette.xml");
+ palette = load_palette ("palette.gstyle.xml");
g_object_unref (palette);
palette = load_palette ("palette.gpl");
diff --git a/plugins/color-picker/data/basic.xml b/plugins/color-picker/data/basic.gstyle.xml
similarity index 54%
rename from plugins/color-picker/data/basic.xml
rename to plugins/color-picker/data/basic.gstyle.xml
index f62c42d..a35302a 100644
--- a/plugins/color-picker/data/basic.xml
+++ b/plugins/color-picker/data/basic.gstyle.xml
@@ -17,16 +17,14 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
-<palette id="basic" _name="Basic">
-
- <color name="color_hex6" value="#808080"/>
- <color name="color_hex3" value="#1aF"/>
- <color name="color_rgb" value="rgb(100, 200, 50)"/>
- <color name="color_rgb_percent" value="rgb(10%, 50%, 70%)"/>
- <color name="color_rgba" value="rgba(0, 10, 70, 1)"/>
- <color name="color_rgba_percent" value="rgba(10%, 50%, 40%, 0.5)"/>
- <color name="color_hsl" value="hsl(100, 100%, 50%)"/>
- <color name="color_hsla" value="hsla(400, 50%, 40%, 0.5)"/>
- <color name="color_named" value="aliceblue"/>
-
+<palette id="basic" _name="Basic" gettext-domain="gnome-builder">
+ <color name="color_hex6" value="#808080"/>
+ <color name="color_hex3" value="#1aF"/>
+ <color name="color_rgb" value="rgb(100, 200, 50)"/>
+ <color name="color_rgb_percent" value="rgb(10%, 50%, 70%)"/>
+ <color name="color_rgba" value="rgba(0, 10, 70, 1)"/>
+ <color name="color_rgba_percent" value="rgba(10%, 50%, 40%, 0.5)"/>
+ <color name="color_hsl" value="hsl(100, 100%, 50%)"/>
+ <color name="color_hsla" value="hsla(400, 50%, 40%, 0.5)"/>
+ <color name="color_named" value="aliceblue"/>
</palette>
diff --git a/plugins/color-picker/gb-color-picker-workbench-addin.c
b/plugins/color-picker/gb-color-picker-workbench-addin.c
index 89078a2..a9c4644 100644
--- a/plugins/color-picker/gb-color-picker-workbench-addin.c
+++ b/plugins/color-picker/gb-color-picker-workbench-addin.c
@@ -83,7 +83,7 @@ init_palettes (GbColorPickerWorkbenchAddin *self)
g_assert (GB_IS_COLOR_PICKER_WORKBENCH_ADDIN (self));
palette_widget = gstyle_color_panel_get_palette_widget (GSTYLE_COLOR_PANEL (self->color_panel));
- add_palette (self, palette_widget,
"resource:///org/gnome/builder/plugins/color-picker-plugin/data/basic.xml");
+ add_palette (self, palette_widget,
"resource:///org/gnome/builder/plugins/color-picker-plugin/data/basic.gstyle.xml");
palette = add_palette (self, palette_widget,
"resource:///org/gnome/builder/plugins/color-picker-plugin/data/svg.gpl");
gstyle_color_panel_show_palette (GSTYLE_COLOR_PANEL (self->color_panel), palette);
diff --git a/plugins/color-picker/gb-color-picker.gresource.xml
b/plugins/color-picker/gb-color-picker.gresource.xml
index 4a50652..9a1c6bf 100644
--- a/plugins/color-picker/gb-color-picker.gresource.xml
+++ b/plugins/color-picker/gb-color-picker.gresource.xml
@@ -13,7 +13,7 @@
<file>gtk/color-picker-palette-menu.ui</file>
<file>gtk/menus.ui</file>
- <file>data/basic.xml</file>
+ <file>data/basic.gstyle.xml</file>
<file>data/svg.gpl</file>
<file compressed="true"
alias="icons/scalable/actions/builder-colorpicker-load-palette.svg">icons/palette/load-palette.svg</file>
diff --git a/po/Makevars b/po/Makevars
index dad02bf..336206c 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -7,8 +7,11 @@ DOMAIN = $(PACKAGE)
subdir = po
top_builddir = ..
+# This allows us using local its files
+XGETTEXT := env GETTEXTDATADIRS="$(top_builddir)/contrib/gstyle/data" $(XGETTEXT)
+
# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2
--keyword=g_dngettext:2,3
+XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2
--keyword=g_dngettext:2,3
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 60299fe..ef16586 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,14 +4,12 @@ contrib/egg/egg-animation.c
contrib/egg/egg-date-time.c
contrib/egg/egg-file-chooser-entry.c
contrib/egg/egg-search-bar.c
-contrib/gstyle/data/palettes/basic.xml
contrib/gstyle/gstyle-color-panel.c
contrib/gstyle/gstyle-color-plane.c
contrib/gstyle/gstyle-color-widget-actions.c
contrib/gstyle/gstyle-palette.c
contrib/gstyle/gstyle-palette-widget.c
contrib/gstyle/tests/data/gstyle-color-editor.ui
-contrib/gstyle/tests/data/palette.xml
contrib/gstyle/ui/gstyle-color-panel.ui
contrib/gstyle/ui/gstyle-color-widget.ui
contrib/gstyle/ui/gstyle-rename-popover.ui
@@ -111,7 +109,7 @@ plugins/clang/ide-clang-preferences-addin.c
plugins/clang/ide-clang-service.c
plugins/clang/ide-clang-symbol-node.c
plugins/clang/ide-clang-translation-unit.c
-plugins/color-picker/data/basic.xml
+plugins/color-picker/data/basic.gstyle.xml
plugins/color-picker/gb-color-picker-prefs.c
plugins/color-picker/gb-color-picker-prefs-palette-row.c
plugins/color-picker/gb-color-picker-workbench-addin.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index d1de359..ece41d0 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,5 +1,7 @@
# List of source files that should *not* be translated.
# Please keep this file sorted alphabetically.
+contrib/gstyle/data/palettes/basic.gstyle.xml
+contrib/gstyle/tests/data/palette.gstyle.xml
contrib/tmpl/tmpl-expr-parser.c
plugins/vala-pack/ide-vala-preferences-addin.c
sub/plugins/vala-pack/ide-vala-preferences-addin.c
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]