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);