Subject: [bug#48637] [PATCH] website: Add publications page

From: Luis Felipe <[email-masked]>
Date: Tue, 25 May 2021 19:46:17 +0000

On Tuesday, May 25, 2021 6:21 PM, pelzflorian (Florian Pelz) <[email-masked]> 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?