Thread
Commits
-
Improve English wording of some other getObjectDescription() messages.
- b86b7bfa3e8b 11.0 landed
-
Improve translatability of some getObjectDescription() messages.
- 7c89eb750d0c 11.0 landed
-
Fix objectaddress.c code for publication relations.
- e8cb8fdfd3a2 10.5 landed
- 1a31baf61ed8 11.0 landed
-
Properly schema-qualify additional object types in getObjectDescription().
- cbb37b2e1fbe 9.3.24 landed
- eb1aa1b46bd9 10.5 landed
- ad73c07b4457 9.5.14 landed
- 8f2143bc8fe9 9.4.19 landed
- 3d3165210dcc 9.6.10 landed
- 056f52d9c3ee 11.0 landed
-
A Japanese-unfriendy error message contruction
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> — 2018-05-22T09:20:20Z
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 -
Re: A Japanese-unfriendy error message contruction
Euler Taveira <euler@timbira.com.br> — 2018-05-22T13:13:10Z
2018-05-22 6:20 GMT-03:00 Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>: > 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. > +1. -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
-
Re: A Japanese-unfriendy error message contruction
Tom Lane <tgl@sss.pgh.pa.us> — 2018-05-22T18:27:29Z
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> writes: > 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. Taking a quick look through objectaddress.c, I see quite a lot of deficiencies: * Is it OK for the OCLASS_CLASS-with-subId case to assume that it can tack on "column COLNAME" after the description of the relation containing the column? Perhaps this is tolerable but I'm not sure. In English it'd be at least as plausible to write "column COLNAME of <relation>", and maybe there are other languages where there's no good way to deal with the current message structure. * Column default values are written as "default for %s" where %s is what you get from the above. This seems likely to be even more awkward; do we need to flatten that into one translatable string instead of recursing? (At the very least I wish it was "default value for %s".) * Collations have namespaces, but the OCLASS_COLLATION code doesn't account for that. Likewise for conversions, extended statistics objects, and all four types of text search objects. * OCLASS_PUBLICATION_REL likewise neglects schema-qualification of the relation name. I wonder why it's not using getRelationDescription, too. * Both OCLASS_AMOP and OCLASS_AMPROC have the problem that they plug the translation of "operator family %s for access method %s" into "<something> of %s". I'm not sure how big a problem this is, or whether it's worth the code-duplication needed to expose the whole thing as one translatable message. Opfamily members are pretty advanced things, so maybe we shouldn't expend too much work on them. (But if we do, we should also take a look at the no-such-member error strings in get_object_address_opf_member, which do the same thing.) * The DEFACL code appends " in schema %s" after an otherwise translatable message. Do we need to fix that? * OCLASS_RULE and OCLASS_TRIGGER use the same untranslatable style as you complain of for OCLASS_POLICY. The missing-schema-qualification issues seem like must-fix problems to me. But not being a translator, I'm not sure how much of a problem each of the other issues is. I think that there was a deliberate decision at some point that we'd accept some translation awkwardness in this code. How far do we want to go to clean it up? regards, tom lane
-
Re: A Japanese-unfriendy error message contruction
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> — 2018-05-23T07:39:37Z
Thank you for the suggestion. Is there anyone using another language who is having difficulties in translating some messages? At Tue, 22 May 2018 14:27:29 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <13575.1527013649@sss.pgh.pa.us> > Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> writes: > > 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. > > Taking a quick look through objectaddress.c, I see quite a lot of > deficiencies: > > * Is it OK for the OCLASS_CLASS-with-subId case to assume that it can > tack on "column COLNAME" after the description of the relation containing > the column? Perhaps this is tolerable but I'm not sure. In English it'd > be at least as plausible to write "column COLNAME of <relation>", and > maybe there are other languages where there's no good way to deal with > the current message structure. In Japanese it is written as "<reltype> RELNAME 'NO' <column> COLNAME" the or just "<reltype> RELNAME <column> COLNAME" is no problem. > * Column default values are written as "default for %s" where %s is what > you get from the above. This seems likely to be even more awkward; do we > need to flatten that into one translatable string instead of recursing? > (At the very least I wish it was "default value for %s".) I see this is constructed in the following structure. | (default for ((table t) (column a))) depends on (sequence seq1) In Japanese, a difference in this sentense is the order of the outermost blocks so there's no problem here. The topmost structure is "%s depends on %s" so it doesn't seem modifiable into plnainer shape without adding duplications.. I agree that "values" make the sentense neater. > * Collations have namespaces, but the OCLASS_COLLATION code doesn't > account for that. Likewise for conversions, extended statistics > objects, and all four types of text search objects. I'm not sure it is necessarily required. getObjectDescription cares only for OPCLASS (and DEFACL), but we could do so for all possible places with no difficulties. > * OCLASS_PUBLICATION_REL likewise neglects schema-qualification of the > relation name. I wonder why it's not using getRelationDescription, too. The function takes ObjectAddresss which we don't have there. It makes the code as the following, the format string looks somewhat confusing.. | reladdr.classId = RelationRelationId; | reladdr.objectId = prform->prrelid; | reladdr.objectSubId = 0; | appendStringInfo(&buffer, _("publication %s in publication %s"), | getObjectDescription(&reladdr), pubname) > * Both OCLASS_AMOP and OCLASS_AMPROC have the problem that they plug > the translation of "operator family %s for access method %s" into > "<something> of %s". I'm not sure how big a problem this is, or whether > it's worth the code-duplication needed to expose the whole thing as > one translatable message. Opfamily members are pretty advanced things, > so maybe we shouldn't expend too much work on them. (But if we do, > we should also take a look at the no-such-member error strings in > get_object_address_opf_member, which do the same thing.) Regarding Japanese, it is not a problem. It is specifically the following | (operator %d.... of (operator family %s for access method %s)) It is translated into Japanese as: | ((<access method> %s <for="NO"> <operator family> %s) <of="NO"> operator %d....) # Japanese suffers here from less variation of the syntactical # element (postpossitional particle, "NO" in the above) # corresnponding to preposition (for and of), but it is a # different matter. > * The DEFACL code appends " in schema %s" after an otherwise > translatable message. Do we need to fix that? Ugg! You're right. It should be moved toward the beginning of the sentence. Looking this, I noticed that some strings that should be translatable are forgot to be enclosed with "_()". > * OCLASS_RULE and OCLASS_TRIGGER use the same untranslatable style > as you complain of for OCLASS_POLICY. # OCLASS_RULE would be OCLASS_REWRITE Mmm. I don't remember that I saw such phrases in ja.po files but it is surely that. > The missing-schema-qualification issues seem like must-fix problems to me. > But not being a translator, I'm not sure how much of a problem each of the > other issues is. I think that there was a deliberate decision at some > point that we'd accept some translation awkwardness in this code. How > far do we want to go to clean it up? I'll clean-up the two thinkgs and post the result later. Thanks! -- Kyotaro Horiguchi NTT Open Source Software Center -
Re: A Japanese-unfriendy error message contruction
Tom Lane <tgl@sss.pgh.pa.us> — 2018-05-23T15:20:24Z
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> writes: > At Tue, 22 May 2018 14:27:29 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <13575.1527013649@sss.pgh.pa.us> >> * Is it OK for the OCLASS_CLASS-with-subId case to assume that it can >> tack on "column COLNAME" after the description of the relation containing >> the column? Perhaps this is tolerable but I'm not sure. In English it'd >> be at least as plausible to write "column COLNAME of <relation>", and >> maybe there are other languages where there's no good way to deal with >> the current message structure. > In Japanese it is written as "<reltype> RELNAME 'NO' <column> COLNAME" > the or just "<reltype> RELNAME <column> COLNAME" is no problem. After thinking about this some more, I'd like to propose that we change the English output to be "column COLNAME of <relation>", using code similar to what you suggested for O_POLICY etc. I know that I've been momentarily confused more than once by looking at obj_description output and thinking "what, the whole relation depends on this? ... oh, no, it's just the one column". It would be better if the head-word were "column". If that leads to better translations in other languages, fine, but in any case this'd be an improvement for English. > I'll clean-up the two thinkgs and post the result later. OK, I'll await your patch before doing more here. regards, tom lane
-
Re: A Japanese-unfriendy error message contruction
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> — 2018-05-24T13:00:57Z
Hello. Here is the patch set. At Wed, 23 May 2018 11:20:24 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <4979.1527088824@sss.pgh.pa.us> > After thinking about this some more, I'd like to propose that we change > the English output to be "column COLNAME of <relation>", using code > similar to what you suggested for O_POLICY etc. I know that I've been > momentarily confused more than once by looking at obj_description output > and thinking "what, the whole relation depends on this? ... oh, no, it's > just the one column". It would be better if the head-word were "column". > If that leads to better translations in other languages, fine, but in > any case this'd be an improvement for English. > > > I'll clean-up the two thinkgs and post the result later. > > OK, I'll await your patch before doing more here. Constraints also have namespace but I understand it is just a decoration so I left it alone. 1. Remove tranlation obstracles. 2. Show qualified names for all possible object types. 3. Changes "relation R column C" to "column C of relation R". Extended statistics's name qualification is not excercised in the current regression test. I found that the last one you sugeested makes error messages far cleaner, easy to grasp the meaning at a glance. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
-
Re: A Japanese-unfriendy error message contruction
Tom Lane <tgl@sss.pgh.pa.us> — 2018-05-24T18:20:21Z
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> writes: > Hello. Here is the patch set. Thanks! I pushed all this plus fixes for the OCLASS_PUBLICATION_REL code. The only non-cosmetic change I made was that I didn't much like what you'd done with the OCLASS_DEFACL code: it seemed quite confusing to be renaming buffers like that, plus it was still assuming more than I thought it should about how the message would go together in the end. I took the advice of the manual instead, and just made pairs of near-duplicate messages to be translated separately. I'm still not sure whether the OCLASS_DEFAULT case is satisfactorily translatable. It would not take a lot more code to expand its message to "default value for column %s of %s", where the second %s is the result of getRelationDescription. However, I have no idea whether there are any translations where that would really work noticeably better. regards, tom lane
-
Re: A Japanese-unfriendy error message contruction
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> — 2018-05-25T01:05:14Z
At Thu, 24 May 2018 14:20:21 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <24988.1527186021@sss.pgh.pa.us> > Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> writes: > > Hello. Here is the patch set. > > Thanks! I pushed all this plus fixes for the OCLASS_PUBLICATION_REL > code. Thanks. > The only non-cosmetic change I made was that I didn't much like what > you'd done with the OCLASS_DEFACL code: it seemed quite confusing to > be renaming buffers like that, plus it was still assuming more than > I thought it should about how the message would go together in the end. > I took the advice of the manual instead, and just made pairs of > near-duplicate messages to be translated separately. I wasn't sure that which way is better. This doubles the msgids. But I can live with it since it would be scaecely changed. > I'm still not sure whether the OCLASS_DEFAULT case is satisfactorily > translatable. It would not take a lot more code to expand its message to > "default value for column %s of %s", where the second %s is the result of > getRelationDescription. However, I have no idea whether there are any > translations where that would really work noticeably better. True. I think we don't have difficulties as for Japanese translation. regards. -- Kyotaro Horiguchi NTT Open Source Software Center