From mboxrd@z Thu Jan 1 00:00:00 1970 From: "pelzflorian (Florian Pelz)" Subject: Re: Website translation Date: Mon, 5 Aug 2019 15:08:28 +0200 Message-ID: <20190805130827.thp3zzw5ljo6g3h2@pelzflorian.localdomain> References: <875zo43dt2.fsf@gnu.org> <20190714142625.my2n7ypimctk3vbd@pelzflorian.localdomain> <87ims3o4tm.fsf@gnu.org> <20190715155414.y6lv45rv55ihvzs5@pelzflorian.localdomain> <87muhc8iqi.fsf@gnu.org> <20190718150836.kzf2tmbtng5l42ta@pelzflorian.localdomain> <87h87jffd7.fsf@elephly.net> <20190718202831.4vavgrmogrkpdote@pelzflorian.localdomain> <20190719122952.an6yr6azie4x3xjg@pelzflorian.localdomain> <20190726111155.qospxvrw7rnuwtok@pelzflorian.localdomain> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="vv7ucv64kokcmotl" Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:52474) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hucj3-0000F9-L1 for guix-devel@gnu.org; Mon, 05 Aug 2019 09:08:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hucj1-0003KI-Vj for guix-devel@gnu.org; Mon, 05 Aug 2019 09:08:33 -0400 Received: from pelzflorian.de ([5.45.111.108]:39144 helo=mail.pelzflorian.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hucj1-0003IR-B6 for guix-devel@gnu.org; Mon, 05 Aug 2019 09:08:31 -0400 Content-Disposition: inline In-Reply-To: <20190726111155.qospxvrw7rnuwtok@pelzflorian.localdomain> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ricardo Wurmus Cc: guix-devel@gnu.org, sirgazil , matias_jose_seco@autoproduzioni.net --vv7ucv64kokcmotl Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Jul 19, 2019 at 02:29:52PM +0200, pelzflorian (Florian Pelz) wrot= e: > I will try writing a custom xgettext that combines > nested=C2=B7s-expressions=C2=B7that are marked for translation with G_ > to=C2=B7a=C2=B7single=C2=B7msgstr that gets written to the=C2=B7PO=C2=B7= file. This combined > string will not be part of the source code but will be generated from > a nested sexp. The PO file containing the combined strings can then > be translated as usual. For reading the translation, the combined > msgstr will be constructed again by the marking procedure G_ and > looked up by reading from an MO file. >=20 I have implemented a working translation tool. Sexp-xgettext generates from an SHTML or other Scheme file with marked s-expressions a POT file which can be translated and turned into an MO file from which the code generates a localized HTML builder. The advantage is that existing SHTML will just have to be marked with G_ and no format string has to be written, although sometimes the SHTML should be adapted to produce a less complicated message in the POT file. Find attached an example of a marked Scheme file home.scm generating guix-website.pot, which after manual translation generates the attached guix.de_DE.html. Marking a string for translation behaves like normal gettext. Marking a parenthesized expression (i.e. a list or procedure call) extracts each string from the parenthesized expression. If a symbol, keyword or other parenthesized expression occurs between the strings, it is extracted as an XML element. Expressions before or after all strings are not extracted. If strings from a parenthesized sub-expression shall be extracted too, the sub-expression must again be marked with G_ unless it is the only sub-expression or it follows a quote, unquote, quasiquote or unquote-splicing. The order of XML elements can be changed in the translation to produce a different ordering inside a parenthesized expression. If a string shall not be extracted from a marked expression, it must be wrapped, for example by a call to the identity procedure. But there are still some bugs like missing line numbers and non-working pgettext and the code is not clear enough yet. I will send a patch series tomorrow after I fixed these issues (even though the documentation won=E2=80=99t be near as good as sirgazil=E2=80=99s for= mat strings). Regards, Florian --vv7ucv64kokcmotl Content-Type: application/vnd.lotus-screencam Content-Disposition: attachment; filename="home.scm" Content-Transfer-Encoding: quoted-printable ;;; GNU Guix web site=0A;;; Initially written by sirgazil who waves all=0A;= ;; copyright interest on this file.=0A=0A(define-module (apps base template= s home)=0A #:use-module (apps base templates components)=0A #:use-module = (apps base templates theme)=0A #:use-module (apps base types)=0A #:use-mo= dule (apps base utils)=0A #:use-module (apps blog templates components)=0A= #:use-module (apps i18n)=0A #:export (home-t))=0A=0A=0A(define (home-t c= ontext)=0A "Return the Home page in SHTML using the data in CONTEXT."=0A = (theme=0A #:title (list (G_ "GNU's advanced distro and transactional pack= age manager"))=0A #:description=0A (G_ "Guix is an advanced distributio= n of the GNU operating system.=0A Guix is technology that respects the fr= eedom of computer users.=0A You are free to run the system for any purpos= e, study how it works,=0A improve it, and share it with the whole world."= )=0A #:keywords=0A (string-split ;TRANSLATORS: |-separated list of webp= age keywords=0A (G_ "GNU|Linux|Unix|Free software|Libre software|Operati= ng \=0Asystem|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \=0AScheme|= Transactional upgrades|Functional package \=0Amanagement|Reproducibility") = #\|)=0A #:active-menu-item "Overview"=0A #:css (list=0A (guix-url "st= atic/base/css/item-preview.css")=0A (guix-url "static/base/css/index.css"= ))=0A #:content=0A `(main=0A ;; Featured content.=0A (section= =0A (@ (class "featured-content"))=0A ,(G_ `(h2 (@ (class "a11y-o= ffset")) "Summary"))=0A (ul=0A ,(G_=0A `(li=0A = ,(G_ `(b "Liberating."))=0A " Guix is an advanced distribution o= f the "=0A ,(G_ (link-yellow=0A #:label "GNU oper= ating system"=0A #:url (gnu-url "gnu/about-gnu.html")))=0A = " developed by the "=0A ,(G_ (link-yellow=0A = #:label "GNU Project"=0A #:url (gnu-url)))=0A = "=E2=80=94which respects the "=0A ,(G_ (link-yellow=0A = #:label "freedom of computer users"=0A #:url (gnu-= url "distros/free-system-distribution-\=0Aguidelines.html")))=0A = ". "))=0A=0A ,(G_=0A `(li=0A ,(G_ `(b "Dependable."= ))=0A " Guix "=0A ,(G_ (link-yellow=0A = #:label "supports"=0A #:url (manual-url "Package-Management= =2Ehtml")))=0A " transactional upgrades and roll-backs, unprivile= ged \=0Apackage management, "=0A ,(G_ (link-yellow=0A = #:label "and more"=0A #:url (manual-url "Features.html= ")))=0A ". When used as a standalone distribution, Guix supports= "=0A ,(G_ (link-yellow=0A #:label "declarative s= ystem configuration"=0A #:url (manual-url "Using-the-Config= uration-System.html")))=0A " for transparent and reproducible ope= rating systems."))=0A=0A ,(G_=0A `(li=0A ,(G_ `(b "= Hackable."))=0A " It provides "=0A ,(G_ (link-yellow=0A= #:label "Guile Scheme"=0A #:url (gnu-url "= software/guile/")))=0A " APIs, including high-level embedded doma= in-specific \=0Alanguages (EDSLs) to "=0A ,(G_ (link-yellow=0A = #:label "define packages"=0A #:url (manual-ur= l "Defining-Packages.html")))=0A " and "=0A ,(G_ (link-yell= ow=0A #:label "whole-system configurations"=0A = #:url (manual-url "System-Configuration.html")))=0A ".")))=0A=0A = (div=0A (@ (class "action-box centered-text"))=0A ,(button-b= ig=0A #:label (apply string-append=0A (C_ `(= "DOWNLOAD v" ,(latest-guix-version) "") "button"))=0A #:url (guix-url "dow= nload/")=0A #:light #true)=0A " " ; A space for readability in non-C= SS browsers.=0A ,(button-big=0A #:label (C_ "CONTRIBUTE" "but= ton")=0A #:url (guix-url "contribute/")=0A #:light #true)))=0A=0A ;; = Discover Guix.=0A (section=0A (@ (class "discovery-box"))=0A = ,(G_ `(h2 "Discover Guix"))=0A=0A ,(G_=0A `(p=0A (@ (c= lass "limit-width centered-block"))=0A "Guix comes with thousands = of packages which include \=0Aapplications, system tools, documentation, fo= nts, and other digital \=0Agoods readily available for installing with the = "=0A ,(G_ (link-yellow #:label "GNU Guix"=0A = #:url (identity "#guix-in-other-distros")))=0A " package man= ager."))=0A=0A (div=0A (@ (class "screenshots-box"))=0A ,@= (map screenshot->shtml (context-datum context "screenshots")))=0A=0A (= div=0A (@ (class "action-box centered-text"))=0A ,(button-big= =0A #:label (C_ "ALL PACKAGES" "button")=0A #:url (guix-url "packa= ges/")=0A #:light #true))=0A=0A ,(horizontal-separator #:light #true)= =0A=0A ;; Guix in different fields.=0A ,(G_ `(h3 "GNU Guix in you= r field"))=0A=0A ,(G_=0A `(p=0A (@ (class "limit-width= centered-block"))=0A "Read some stories about how people are usin= g GNU=C2=A0Guix in=0Atheir daily lives."))=0A=0A (div=0A (@ (cla= ss "fields-box"))=0A=0A " " ; A space for readability in non-CSS brow= sers (same below).=0A ,(button-big=0A #:label (C_ "SOFTWARE D= EVELOPMENT" "button")=0A #:url (guix-url "blog/tags/software-develo= pment/")=0A #:light #true)=0A " "=0A ,(button-big=0A = #:label (C_ "BIOINFORMATICS" "button")=0A #:url (guix-url "bl= og/tags/bioinformatics/")=0A #:light #true)=0A " "=0A ,= (button-big=0A #:label (C_ "HIGH PERFORMANCE COMPUTING" "button")= =0A #:url (guix-url "blog/tags/high-performance-computing/")=0A = #:light #true)=0A " "=0A ,(button-big=0A #:label (= C_ "RESEARCH" "button")=0A #:url (guix-url "blog/tags/research/")= =0A #:light #true)=0A " "=0A ,(button-big=0A #:= label (C_ "ALL FIELDS..." "button")=0A #:url (guix-url "blog/")=0A = #:light #true))=0A=0A ,(horizontal-separator #:light #true)=0A= =0A ;; Using Guix in other distros.=0A ,(G_=0A `(h3=0A = (@ (id "guix-in-other-distros"))=0A "GNU Guix in other GNU/L= inux distros"))=0A=0A (div=0A (@ (class "info-box"))=0A (v= ideo=0A (@ (class "video-preview")=0A (src "https://audio-video.gnu.org/= video/misc/2016-07__GNU_Guix_Demo_2.webm")=0A (poster ,(guix-url "static= /media/img/guix-demo.png"))=0A (controls "controls"))=0A ,(G_=0A = `(p=0A "Video: "=0A ,(G_ (link-yellow=0A = #:label "Demo of Guix in another GNU/Linux distribution"=0A = #:url "https://audio-video.gnu.org/video/misc/\=0A2016-07__= GNU_Guix_Demo_2.webm"))=0A " (1 minute, 30 seconds)."))))=0A=0A = (div=0A (@ (class "info-box justify-left"))=0A ,(G_ `(p=0A= "If you don't use GNU=C2=A0Guix as a standalone GNU/Linux \= =0Adistribution, you still can use it as a package manager on top of any \= =0AGNU/Linux distribution. This way, you can benefit from all its convenien= ces."))=0A=0A ,(G_ `(p=0A "Guix won't interfere with the= package manager that comes \=0Awith your distribution. They can live toget= her.")))=0A=0A (div=0A (@ (class "action-box centered-text"))=0A= ,(button-big=0A #:label (C_ "TRY IT OUT!" "button")=0A #:ur= l (guix-url "download/")=0A #:light #true)))=0A=0A ;; Latest Blog post= s.=0A (section=0A (@ (class "centered-text"))=0A ,(G_ `(h2 "B= log"))=0A=0A ,@(map post-preview (context-datum context "posts"))=0A= =0A (div=0A (@ (class "action-box centered-text"))=0A ,(bu= tton-big=0A #:label (C_ "ALL POSTS" "button")=0A #:url (guix-url "= blog/"))))=0A=0A ;; Contact info.=0A (section=0A (@ (class "co= ntact-box centered-text"))=0A ,(G_ `(h2 "Contact"))=0A=0A ,@(map = contact-preview (context-datum context "contact-media"))=0A=0A (div=0A= (@ (class "action-box centered-text"))=0A ,(button-big=0A = #:label (C_ "ALL CONTACT MEDIA" "button")=0A #:url (guix-url "contact/= ")))))))=0A --vv7ucv64kokcmotl Content-Type: application/vnd.ms-powerpoint Content-Disposition: attachment; filename="guix-website.pot" Content-Transfer-Encoding: quoted-printable # SOME DESCRIPTIVE TITLE.=0A# Copyright (C) YEAR Ludovic Court=C3=A8s=0A# T= his file is distributed under the same license as the guix-website package.= =0A# FIRST AUTHOR , YEAR.=0A#=0A#, fuzzy=0Amsgid ""=0Amsgstr= ""=0A"Project-Id-Version: guix-website\n"=0A"Report-Msgid-Bugs-To: ludo@gn= u.org\n"=0A"POT-Creation-Date: 2019-08-04 11:14+0200\n"=0A"PO-Revision-Date= : YEAR-MO-DA HO:MI+ZONE\n"=0A"Last-Translator: FULL NAME \n"= =0A"Language-Team: LANGUAGE \n"=0A"Language: \n"=0A"MIME-Version= : 1.0\n"=0A"Content-Type: text/plain; charset=3DUTF-8\n"=0A"Content-Transfe= r-Encoding: 8bit\n"=0A=0A#: apps/base/templates/home.scm=0Amsgid "GNU's adv= anced distro and transactional package manager"=0Amsgstr ""=0A=0A#: apps/ba= se/templates/home.scm=0Amsgid "Guix is an advanced distribution of the GNU = operating system.\n Guix is technology that respects the freedom of compu= ter users.\n You are free to run the system for any purpose, study how it= works,\n improve it, and share it with the whole world."=0Amsgstr ""=0A= =0A#: apps/base/templates/home.scm=0Amsgid "GNU|Linux|Unix|Free software|Li= bre software|Operating system|GNU Hurd|GNU Guix package manager|GNU Guile|G= uile Scheme|Transactional upgrades|Functional package management|Reproducib= ility"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgid "Summary"= =0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgid "<1>Liberating. Guix is an advanced distribution of the <2>GNU operating system deve= loped by the <3>GNU Project=E2=80=94which respects the <4>freedom of co= mputer users. "=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgi= d "<1>Dependable. Guix <2>supports transactional upgrades and roll-= backs, unprivileged package management, <3>and more. When used as a st= andalone distribution, Guix supports <4>declarative system configuration for transparent and reproducible operating systems."=0Amsgstr ""=0A=0A#: = apps/base/templates/home.scm=0Amsgid "<1>Hackable. It provides <2>Guile= Scheme APIs, including high-level embedded domain-specific languages (= EDSLs) to <3>define packages and <4>whole-system configurations."= =0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgctxt "button"=0Amsgi= d "DOWNLOAD v<1/>"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgct= xt "button"=0Amsgid "CONTRIBUTE"=0Amsgstr ""=0A=0A#: apps/base/templates/ho= me.scm=0Amsgid "Discover Guix"=0Amsgstr ""=0A=0A#: apps/base/templates/home= =2Escm=0Amsgid "Guix comes with thousands of packages which include applica= tions, system tools, documentation, fonts, and other digital goods readily = available for installing with the <1>GNU Guix package manager."=0Amsgst= r ""=0A=0A#: apps/base/templates/home.scm=0Amsgctxt "button"=0Amsgid "ALL P= ACKAGES"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgid "GNU Guix= in your field"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgid "R= ead some stories about how people are using GNU=C2=A0Guix in\ntheir daily l= ives."=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgctxt "button"= =0Amsgid "SOFTWARE DEVELOPMENT"=0Amsgstr ""=0A=0A#: apps/base/templates/hom= e.scm=0Amsgctxt "button"=0Amsgid "BIOINFORMATICS"=0Amsgstr ""=0A=0A#: apps/= base/templates/home.scm=0Amsgctxt "button"=0Amsgid "HIGH PERFORMANCE COMPUT= ING"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgctxt "button"=0A= msgid "RESEARCH"=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgctxt= "button"=0Amsgid "ALL FIELDS..."=0Amsgstr ""=0A=0A#: apps/base/templates/h= ome.scm=0Amsgid "GNU Guix in other GNU/Linux distros"=0Amsgstr ""=0A=0A#: a= pps/base/templates/home.scm=0Amsgid "Video: <1>Demo of Guix in another GNU/= Linux distribution<1.1/>https://audio-video.gnu.org/video/misc/2016-07__GNU= _Guix_Demo_2.webm (1 minute, 30 seconds)."=0Amsgstr ""=0A=0A#: apps/bas= e/templates/home.scm=0Amsgid "If you don't use GNU=C2=A0Guix as a standalon= e GNU/Linux distribution, you still can use it as a package manager on top = of any GNU/Linux distribution. This way, you can benefit from all its conve= niences."=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0Amsgid "Guix wo= n't interfere with the package manager that comes with your distribution. T= hey can live together."=0Amsgstr ""=0A=0A#: apps/base/templates/home.scm=0A= msgctxt "button"=0Amsgid "TRY IT OUT!"=0Amsgstr ""=0A=0A#: apps/base/templa= tes/home.scm=0Amsgid "Blog"=0Amsgstr ""=0A=0A#: apps/base/templates/home.sc= m=0Amsgctxt "button"=0Amsgid "ALL POSTS"=0Amsgstr ""=0A=0A#: apps/base/temp= lates/home.scm=0Amsgid "Contact"=0Amsgstr ""=0A=0A#: apps/base/templates/ho= me.scm=0Amsgctxt "button"=0Amsgid "ALL CONTACT MEDIA"=0Amsgstr ""=0A --vv7ucv64kokcmotl Content-Type: text/html; charset=utf-8 Content-Disposition: attachment; filename="guix.de_DE.html" Content-Transfer-Encoding: quoted-printable GNU's advanced distro and tra= nsactional package manager =E2=80=94 GNU=C2=A0Guix

Guix

Website menu:

Zusammenfassung

Entdecken Sie Guix

Mi= t Guix kommen Tausende von Paketen. Dazu geh=C3=B6ren Anwendungen, Systemwe= rkzeuge, Dokumentation, Schriftarten, sowie andere digitale G=C3=BCter, die= jederzeit zur Installation mit dem Paketverwaltungswerkzeug GNU Guix bereitstehen.

3D""=

Graphical log-in screen.

3D""

Con= trol your computer with the GNOME desktop environment.

3D""

The Xfce desktop environment with GNU=C2=A0Emacs and IceCat= .

= 3D""

Virtual machine started with 'guix s= ystem vm'.

3D""=

Enlightenment, Inksca= pe, and Serbian text.

3D""

GNU Guix in Ihrem Bereich

Lesen Sie ein paar Erfahrungen, wi= e die Leute GNU=C2=A0Guix in ihrem t=C3=A4glichen Leben benutzen.

3D""

GNU Guix auf anderen GNU/Lin= ux-Distributionen

Wenn Sie GNU=C2=A0Guix nicht= als eine eigenst=C3=A4ndige GNU/Linux-Distribution verwenden, k=C3=B6nnen = Sie es trotzdem zur Paketverwaltung benutzen, aufgesetzt auf eine beliebige= bestehende GNU/Linux-Distribution. Auf diese Weise k=C3=B6nnen Sie all sei= ne Vorteile genie=C3=9Fen.

Guix und das Paketverwaltungswerkzeug, das= mit Ihrer Distribution ausgeliefert wird, werden sich gegenseitig nicht st= =C3=B6ren. Sie k=C3=B6nnen friedlich koexistieren.

= Blog

Towards Guix for DevOps

Juli 12, 2019

Hey, there! I'm Jakob, a Google Summer of Cod= e intern and new contributor to Guix. Since May, I've been working on a DevOps automation tool for the Guix System, which=E2=80=A6

Substitutes are now available a= s lzip

Juni 17, 2019

For a long time, our build farm at ci.guix.gnu.org has been delivering substitutes=20 (pre-built binaries) compressed with gzip. Gzip was never the best choice in terms of compression=E2=80=A6

=

Creating and using a custom Linux kernel on Guix System

Mai 21, 2019

Guix is, at its cor= e, a source based distribution with substitutes , and as such building packages from their source code is an expected part of regular package installations and=E2=80=A6

Kontakt

IRC Channel

Join= the #guix channel on the Freenode IRC network to chat with the community about GNU=C2=A0Guix or to get help in =E2=80=A6

Info Mailing List

Subscribe to the = info-guix low-traffic mailing list to receive important announcements sent by the project maintainers (in English). =E2=80=A6

Help Mailing List

Subscribe = to the Help mailing list to get support from the GNU=C2=A0Guix community via email. You can post messages in English though= we also accept other languages.=E2=80=A6

--vv7ucv64kokcmotl--