>From 29bde823435396763372c8c8d8171b306aba9e7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
Date: Sun, 11 Aug 2013 17:29:39 +0200
Subject: [PATCH] x-glade: Fix --extract-all option.
---
gettext-tools/src/ChangeLog | 6 ++++++
gettext-tools/src/x-glade.c | 45 +++++++++++++++++++------------------------
2 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog
index 4060a37..5f4e5a7 100644
--- a/gettext-tools/src/ChangeLog
+++ b/gettext-tools/src/ChangeLog
@@ -1,5 +1,11 @@
2013-08-11 Miguel Angel Arruga Vivas
+ * x-glade.c (start_element_glade2): Extract comments and context
+ with --extract-all option.
+ (start_element_gtkbuilder): Likewise.
+
+2013-08-11 Miguel Angel Arruga Vivas
+
* x-glade.c (struct element_state): Remove field extracted_comment.
(comment_handler): Add foward declaration.
(start_element_glade2): Call comment_handler.
diff --git a/gettext-tools/src/x-glade.c b/gettext-tools/src/x-glade.c
index 7a6124e..4196415 100644
--- a/gettext-tools/src/x-glade.c
+++ b/gettext-tools/src/x-glade.c
@@ -221,8 +221,7 @@ start_element_glade2 (struct element_state *p, const char *name,
See .
If the element has the attribute context="yes", the content of
the element is in the form "msgctxt|msgid". */
- if (!p->extract_string
- && (strcmp (name, "property") == 0 || strcmp (name, "atkproperty") == 0))
+ if (strcmp (name, "property") == 0 || strcmp (name, "atkproperty") == 0)
{
bool has_translatable = false;
bool has_context = false;
@@ -237,14 +236,13 @@ start_element_glade2 (struct element_state *p, const char *name,
has_context = (strcmp (attp[1], "yes") == 0);
attp += 2;
}
- p->extract_string = has_translatable;
+ p->extract_string = p->extract_string || has_translatable;
p->extract_context = has_context;
}
/* In Glade 2, the attribute description="..." of
element is also translatable. */
- if (!p->extract_string
- && strcmp (name, "atkaction") == 0)
+ if (strcmp (name, "atkaction") == 0)
{
const char **attp = attributes;
while (*attp != NULL)
@@ -322,27 +320,24 @@ start_element_gtkbuilder (struct element_state *p, const char *name,
See .
The translator comment is found in the attribute comments="..."
and context is found in the attribute context="...". */
- if (!p->extract_string)
+ bool has_translatable = false;
+ const char *extracted_context = NULL;
+ const char **attp = attributes;
+ while (*attp != NULL)
{
- bool has_translatable = false;
- const char *extracted_context = NULL;
- const char **attp = attributes;
- while (*attp != NULL)
- {
- if (strcmp (attp[0], "translatable") == 0)
- has_translatable = (strcmp (attp[1], "yes") == 0);
- else if (strcmp (attp[0], "comments") == 0)
- comment_handler (NULL, attp[1]);
- else if (strcmp (attp[0], "context") == 0)
- extracted_context = attp[1];
- attp += 2;
- }
- p->extract_string = has_translatable;
- p->extracted_context =
- (has_translatable && extracted_context != NULL
- ? xstrdup (extracted_context)
- : NULL);
- }
+ if (strcmp (attp[0], "translatable") == 0)
+ has_translatable = (strcmp (attp[1], "yes") == 0);
+ else if (strcmp (attp[0], "comments") == 0)
+ comment_handler (NULL, attp[1]);
+ else if (strcmp (attp[0], "context") == 0)
+ extracted_context = attp[1];
+ attp += 2;
+ }
+ p->extract_string = p->extract_string || has_translatable;
+ p->extracted_context =
+ (has_translatable && extracted_context != NULL
+ ? xstrdup (extracted_context)
+ : NULL);
}
static void
--
1.7.10.4