* website/apps/media/types.scm (<video>, video):
Add new field for the page URL subpath.
* website/apps/media/data.scm (playlists): Use it.
* website/apps/media/utils.scm (video->url): Compute page URL from it.
* website/po/guix-website.pot: New file.
* website/apps/base/utils.scm (manual-url-with-language): New
procedure.
(locale-display-name): New procedure.
(guix-url): Use localized URLs by default.
* website/apps/base/templates/components.scm (manual-href,
manual-link-yellow): New procedures.
(breadcrumbs, contact->shtml, navbar): Mark for translation.
* website/apps/base/data.scm (contact-media): Mark for
translation.
* website/apps/base/templates/about.scm (about-t): Mark for
translation.
* website/apps/base/templates/contact.scm (contact-t): Mark for
translation.
* website/apps/base/templates/contribute.scm (contribute-t): Mark for
translation.
* website/apps/base/templates/donate.scm (donate-t): Mark for
translation.
* website/apps/base/templates/graphics.scm (graphics-t): Mark for
translation.
* website/apps/base/templates/help.scm (help-t): Mark for translation.
* website/apps/base/templates/home.scm (home-t): Mark for translation.
* website/apps/base/templates/irc.scm (irc-t): Mark for translation.
* website/apps/base/templates/menu.scm (menu-t): Mark for translation.
* website/apps/base/templates/security.scm (security-t): Mark for
translation.
* website/apps/base/templates/theme.scm (theme): Mark for translation.
* website/apps/blog/templates/components.scm (post-preview, sidebar):
Mark for translation.
* website/apps/blog/templates/feed.scm (atom-feed-t): Mark for
translation.
* website/apps/blog/templates/post-list.scm (post-list-t): Mark for
translation.
* website/apps/blog/templates/post.scm (post-t): Mark for translation.
* website/apps/blog/templates/tag.scm (tag-t): Mark for translation.
* website/apps/download/data.scm (home-t): Mark for translation.
* website/apps/download/templates/components.scm (system-downloads):
Mark for translation.
* website/apps/download/templates/download.scm (download-t): Mark for
translation.
* website/apps/download/templates/download-latest.scm (images,
image-download, download-latest-t): Mark for
translation.
* website/apps/media/data.scm (playlists, screenshots):
Mark for translation.
* website/apps/media/templates/components.scm (video->shtml,
video-content): Mark for translation.
* website/apps/base/templates/screenshot.scm (screenshot-t):
Mark for translation.
* website/apps/media/templates/screenshots-overview.scm
(screenshots-overview-t): Mark for translation.
* website/apps/media/templates/video.scm (video-t): Mark for translation.
* website/apps/media/templates/video-list.scm (video-list-t):
Mark for translation.
* website/apps/packages/templates/components.scm (detailed-package-preview,
letter-selector, sidebar, supported-systems->shtml): Mark for translation.
* website/apps/packages/templates/detailed-index.scm (detailed-index-t):
Mark for translation.
* website/apps/packages/templates/detailed-package-list.scm
(detailed-package-list-t): Mark for translation.
* website/apps/packages/templates/index.scm (index-t): Mark for translation.
* website/apps/packages/templates/package-list.scm (package-list-t):
Mark for translation.
* website/apps/packages/templates/package.scm (package-t): Mark for
translation.
* website/po/POTFILES: New file. List apps files here.
* website/po/LINGUAS: New file. List en_US lingua.
* website/po/ietf-tags.scm: New file. Add association for en_US lingua.
* website/scripts/sexp-xgettext.scm: New file for generating a POT file.
(<keyword-spec>, <po-entry>, <construct-fold-state>): New record types.
(combine-duplicate-po-entries, complex-keyword-spec?, parse-scheme-file,
po-equal?, write-po-entry, update-ecomments-string!, update-file-name!,
update-old-line-number!, update-line-number!, incr-line-number!,
incr-line-number-for-each-nl!, current-ref, make-simple-po-entry,
matching-keyword, nth-exp, more-than-one-exp?, token->string-symbol-or-keyw,
complex-marked-list->po-entries, construct-po-entries, tag,
construct-msgid-and-po-entries, scheme-file->po-entries): New procedures.
(%keyword-specs, %options, %comments-line, %ecomments-string, %file-name,
%old-line-number, %line-number, %files-from-port, %source-files,
%output-po-entries, %output-port): New variables.
* website/sexp-xgettext.scm: New file with module for looking up
translations.
(%complex-keywords, %simple-keywords, %plural-numbers, %linguas):
New variables.
(<construct-fold-state>, <deconstruct-fold-state>): New record types.
(set-complex-keywords!, set-simple-keywords!, gettext-keyword?, tag,
sexp->msgid, deconstruct): New procedures.
(sgettext, spgettext, sngettext, snpgettext): New macro helpers.
* website/apps/i18n.scm: New file.
(G_, N_, C_, NC_, ietf-tags-file-contents): New syntax to use for i18n.
(%current-ietf-tag, %current-lang, %current-lingua): New variables.
(builder->localized-builder, builders->localized-builders,
localized-root-path, first-value): New utility procedures.
(<asset>, <page>): New imports from Haunt.
* website/haunt.scm: Wrap each builder to build the locale set in LC_ALL.
* website/.guix.scm: Make Haunt build directory writable so Haunt can
overwrite duplicate assets. Convert PO files to MO files and build for
each lingua.
* website/README: Adapt build instructions for i18n.
* website/i18n-howto: New file with usage instructions.
* website/apps/base/utils.scm (guix-url): Move the logic that
computes which root path to use from the getter to ...
(guix-root-url-path): ... the setter here.
* website/posts/improve-internationalization-support-for-the-guix-data-service.md:
New file
* website/static/blog/img/guix-data-service-audacity.png: New file.
Signed-off-by: Christopher Baines <mail@cbaines.net>
* website/apps/packages/builder.scm (origin->json): Add integrity field using
SRI format.
(sources-json-builder): Add "revision" field to "sources.json".
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* website/apps/download/templates/download-latest.scm (default-system): New
variable,
(<image>)[labels]: new field,
(images): adapt accordingly,
(image-download): use the new label field.
* website/posts/securing-updates.md: Add picture with introduction and
comment it.
* website/static/blog/img/commit-graph-intro.dot,
website/static/blog/img/commit-graph-intro.svg: New files.
* website/.guix.scm (inferior-package): New procedure,
(latest-guile): new variable,
(haunt-with-latest-guile): renamed from haunt-with-guile-3.0.3, also use
"inferior-package" to make sure to use the same Guile as the one of latest
Guix,
(build): adapt accordingly.
Replicate the "/download" page style which is responsive.
* website/apps/download/templates/download-latest.scm (<image>)[title]: New
field,
[system]: turn into "systems",
(images): adapt accordingly,
(image-download): renamed from "image-table-row". Return a div block
representing an image, instead of a table row,
(download-latest-t): remove the image table, and call image-download.
* website/static/base/css/download.css (.detail-btn): New class copied from
.signature-btn.
* website/apps/download/templates/download-latest.scm (<image>)[system]: New
field,
(build-query, build-detail-url, build-product-download-url): add a system
argument and use it in the query,
(image-table-row): adapt accordingly.
* website/apps/download/templates/download-latest.scm (build-query): New
procedure,
(build-detail, build-product-download-url): get the query string from the
above procedure.
CI build products links are created at build-time, by using Cuirass api. This
can not work if the website is built as a derivation, without network access.
Do not rely on "latest-builds" procedure and use the new static Cuirass routes
"/search/latest" and "/search/latest/<build-product>" to provide static
download links.
* website/apps/download/templates/download-latest.scm (default-spec): New
variable,
(build-detail-url): remove url argument and use "/search/latest" route,
(build-product-download-url): remove url and use
"/search/latest/<build-product>" route,
(products-latest-urls): remove it,
(download-latest-t): adapt accordingly.
* website/apps/download/templates/download-latest.scm: New file.
* website/apps/download/builder.scm (download-latest-builder): New variable,
(builder): add it.
* website/apps/base/templates/components.scm (navbar): Add a dropdowm menu for
"Download" with "Stable" and "Latests" items.
* website/static/base/css/common.css (download-table-box): New class.
* website/drafts/further-reduced-binary-bootstrap.md: Mention
"trusting trust" as a symptom and and add additions by Danny
Milosavljevic and Timothy Sample.