A Japanese-unfriendy error message contruction - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject A Japanese-unfriendy error message contruction
Date
Msg-id 20180522.182020.114074746.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
Responses Re: A Japanese-unfriendy error message contruction  (Euler Taveira <euler@timbira.com.br>)
Re: A Japanese-unfriendy error message contruction  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hello.

While I revised the translation, I ran across the following code.

>    form_policy = (Form_pg_policy) GETSTRUCT(tuple);
>
>    appendStringInfo(&buffer, _("policy %s on "),
>             NameStr(form_policy->polname));
>    getRelationDescription(&buffer, form_policy->polrelid);

getRelationDescription appends a string like "table %s" to the
buffer so finally a message like "policy %s on table %s" is
constructed but this is very unfriendly to Japanese syntax.

The "policy %s" and "<objname> %s" are transposed in Japaese
syntax.  Specifically "<objname> %s NO <policy> %s" is the
natural translation of "policy %s on <objname> %s". But currently
we cannot get the natural error message in Japanese.

For the reason, I'd like to propose to refactor
getObjectDescription:OPCLASS_POLICY as the attached patch. The
same structure is seen for OPCLASS_AMOP.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index d371c47842..baa77e4e79 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -3356,6 +3356,7 @@ getObjectDescription(const ObjectAddress *object)
                 SysScanDesc sscan;
                 HeapTuple    tuple;
                 Form_pg_policy form_policy;
+                StringInfoData reldesc;
 
                 policy_rel = heap_open(PolicyRelationId, AccessShareLock);
 
@@ -3375,9 +3376,13 @@ getObjectDescription(const ObjectAddress *object)
 
                 form_policy = (Form_pg_policy) GETSTRUCT(tuple);
 
-                appendStringInfo(&buffer, _("policy %s on "),
-                                 NameStr(form_policy->polname));
-                getRelationDescription(&buffer, form_policy->polrelid);
+                initStringInfo(&reldesc);
+                getRelationDescription(&reldesc, form_policy->polrelid);
+
+                appendStringInfo(&buffer, _("policy %s on %s"),
+                                 NameStr(form_policy->polname),
+                                 reldesc.data);
+                pfree(reldesc.data);
 
                 systable_endscan(sscan);
                 heap_close(policy_rel, AccessShareLock);

pgsql-hackers by date:

Previous
From: "Ideriha, Takeshi"
Date:
Subject: Update backend/lib/README
Next
From: Anthony Bykov
Date:
Subject: Re: Transform for pl/perl