changeset 2736:af22c6dccf1c

(quoting_style_args, quoting_style_vals, quotearg_buffer_restyled): Add support for clocale_quoting_style. Undo previous change to locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}" and "{RIGHT QUOTATION MARK}" msgids.
author Jim Meyering <jim@meyering.net>
date Fri, 14 Jul 2000 11:26:28 +0000
parents 0215def82083
children 8e2d46a9cd99
files lib/quotearg.c
diffstat 1 files changed, 22 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -115,6 +115,7 @@
   "c",
   "escape",
   "locale",
+  "clocale",
   0
 };
 
@@ -126,7 +127,8 @@
   shell_always_quoting_style,
   c_quoting_style,
   escape_quoting_style,
-  locale_quoting_style
+  locale_quoting_style,
+  clocale_quoting_style
 };
 
 /* The default quoting options.  */
@@ -175,13 +177,15 @@
   return r;
 }
 
-/* Return the translation of MSGID if there is one, and
-   DEFAULT_TRANSLATION otherwise.  */
+/* MSGID approximates a quotation mark.  Return its translation if it
+   has one; otherwise, return either it or "\"", depending on S.  */
 static char const *
-gettext_default (char const *msgid, char const *default_translation)
+gettext_quote (char const *msgid, enum quoting_style s)
 {
   char const *translation = _(msgid);
-  return translation == msgid ? default_translation : translation;
+  if (translation == msgid && s == clocale_quoting_style)
+    translation = "\"";
+  return translation;
 }
 
 /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
@@ -232,30 +236,25 @@
       break;
 
     case locale_quoting_style:
+    case clocale_quoting_style:
       {
 	/* Get translations for open and closing quotation marks.
 
-	   The message catalog should translate "{LEFT QUOTATION
-	   MARK}" to a left quotation mark suitable for the locale,
-	   and similarly for "{RIGHT QUOTATION MARK}".  If the catalog
-	   has no translation, the code below uses a neutral
-	   (vertical) quotation mark instead, as it is the most
-	   appropriate for the C locale.
+	   The message catalog should translate "`" to a left
+	   quotation mark suitable for the locale, and similarly for
+	   "'".  If the catalog has no translation,
+	   locale_quoting_style quotes `like this', and
+	   clocale_quoting_style quotes "like this".
 
 	   For example, an American English Unicode locale should
-	   translate the string "{LEFT QUOTATION MARK}" to the
-	   character U+201C (LEFT DOUBLE QUOTATION MARK), and should
-	   translate the string "{RIGHT QUOTATION MARK}" to the
-	   character U+201D (RIGHT DOUBLE QUOTATION MARK).  A British
-	   English Unicode locale should instead translate these to
-	   U+2018 (LEFT SINGLE QUOTATION MARK) and U+2019 (RIGHT
-	   SINGLE QUOTATION MARK), respectively.  */
+	   translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+	   should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+	   MARK).  A British English Unicode locale should instead
+	   translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+	   U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.  */
 
-	static char const quotation_mark[] = "\"";
-	char const *left = gettext_default (N_("{LEFT QUOTATION MARK}"),
-					    quotation_mark);
-	char const *right = gettext_default (N_("{RIGHT QUOTATION MARK}"),
-					     quotation_mark);
+	char const *left = gettext_quote (N_("`"), quoting_style);
+	char const *right = gettext_quote (N_("'"), quoting_style);
 	for (quote_string = left; *quote_string; quote_string++)
 	  STORE (*quote_string);
 	backslash_escapes = 1;