Le 25 mai 2021 15:46:17 GMT-04:00, Luis Felipe via Guix-patches via <guix-patches@gnu.org> a écrit :
On Tuesday, May 25, 2021 6:21 PM, pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de> wrote:
On Tue, May 25, 2021 at 02:37:03PM +0000, Luis Felipe wrote:
Yeah. Would it as follows? (I still struggle with i18n):
(p
(@ (class "publication-info"))
,(G_ `("Published "
,(date->string (publication-date publication)
(C_ "SRFI-19 date->string format" "~b ~d, ~Y"))
" by "
,(string-join (publication-authors publication) ", "))))
It would need to be
(p
(@ (class "publication-info"))
,(let ((format (C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
(G_ `("Published "
,(date->string (publication-date publication) format)
" by "
,(string-join (publication-authors publication) ", ")
""))))
The let is needed because C_ cannot be nested inside G_ because the
sexp-xgettext script parses Scheme files in only one pass currently.
(And I’m not motivated enough to make it go back to parse the nested
C_ because nesting is seldom needed.)
The "" at the end is needed so (string-join …) gets its own XML
element that can be moved by translators.
Without "":
msgid "Published <1/> by "
With "":
msgid "Published <1/> by <2/>"
You told me that before but I forgot :P
Also, I think the delimiter for "string-join" in the list of authors
should be translated because that comma is not used in Japanese, for
example. So would it be ok like this:
[…]
,(string-join (publication-authors publication)
(C_ "Separator of items in a list" ", ")))))
Yes, you are very right, although as above please move it to the let.
Then it can become 、 or と or whatever; I don’t know what is common
in Japan.
I'm still unsure about when I should use a context and when a
TRANSLATORS comment...
A msgctxt should be used if another ", " string with different
translations might be added. I would use a context, I think, but
maybe it is an abundance of caution.
Ok, so I moved both the date and the list authors to the definitions part of a let:
(define (publication->shtml publication)
"Return an SHTML representation of the given publication object.
PUBLICATION (<publication>)
A publication object as defined in (apps media types)."
(let ((date
(date->string (publication-date publication)
(C_ "SRFI-19 date->string format" "~b ~d, ~Y")))
(authors
(string-join (publication-authors publication)
(C_ "Separator for authors in a list" ", "))))
`(a
(@ (class "publication-preview")
(href ,(publication-url publication)))
(h3
(@ (lang ,(publication-language publication))
(class "publication-title"))
,(publication-title publication))
(p
(@ (class "publication-info"))
,(G_ `("Published " ,date " by " ,authors ""))))))
Does it look right?