Package: guix-patches;
Reported by: Clément Lassieur <clement <at> lassieur.org>
Date: Tue, 16 Jan 2024 12:25:01 UTC
Severity: normal
Tags: patch
Done: Clément Lassieur <clement <at> lassieur.org>
Bug is archived. No further changes may be made.
Message #14 received at 68503 <at> debbugs.gnu.org (full text, mbox):
From: Clément Lassieur <clement <at> lassieur.org> To: 68503 <at> debbugs.gnu.org Cc: Clément Lassieur <clement <at> lassieur.org> Subject: [PATCH v3] gnu: torbrowser: Add support for language localisation. Date: Thu, 18 Jan 2024 23:46:49 +0100
* gnu/packages/gnuzilla.scm (all-mozilla-locales): Export it. * gnu/packages/tor.scm (%torbrowser-locales, translation-base-browser, translation-tor-browser): New variables. (torbrowser)[arguments]: In ‘setenv’ phase, set MOZ_CHROME_MULTILOCALE. Add ‘copy-firefox-locales’, ‘copy-basebrowser-locales’, ‘copy-torbrowser-locales’ and ‘build-locales’ phases. Change-Id: Ia5b28fa5d885f24140893dc270e57e83b0250c67 --- gnu/packages/gnuzilla.scm | 3 +- gnu/packages/tor.scm | 112 +++++++++++++++++++++++++++++++++++++- 2 files changed, 113 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index ea5de680e5d0..e3bc625bc0f5 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -98,7 +98,8 @@ (define-module (gnu packages gnuzilla) #:use-module (gnu packages xdisorg) #:use-module (gnu packages readline) #:use-module (gnu packages sqlite) - #:autoload (json parser) (json->scm)) + #:autoload (json parser) (json->scm) + #:export (all-mozilla-locales)) (define-public mozjs (package diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index b20e17e4cea8..fbd5f0a0af78 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2021-2023 Danial Behzadi <dani.behzi <at> ubuntu.com> ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; Copyright © 2022 Jim Newsome <jnewsome <at> torproject.org> -;;; Copyright © 2023 Clément Lassieur <clement <at> lassieur.org> +;;; Copyright © 2023, 2024 Clément Lassieur <clement <at> lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -503,6 +503,36 @@ (define %torbrowser-version "13.0.8") ;; "src-firefox-tor-browser-". (define %torbrowser-firefox-version "115.6.0esr-13.0-1-build2") +;; Use the list in tor-browser-build/rbm.conf. +(define %torbrowser-locales + '("ar" "ca" "cs" "da" "de" "el" "es-ES" "fa" "fi" "fr" "ga-IE" "he" "hu" + "id" "is" "it" "ja" "ka" "ko" "lt" "mk" "ms" "my" "nb-NO" "nl" "pl" + "pt-BR" "ro" "ru" "sq" "sv-SE" "th" "tr" "uk" "vi" "zh-CN" "zh-TW")) + +;; See tor-browser-build/projects/translation/config. +(define translation-base-browser + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.torproject.org/tpo/translation.git") + (commit "5490489a8d356a44d792300b4dfddba792d10f2e"))) + (file-name "translation-base-browser") + (sha256 + (base32 + "1knxary2zp2705xzzs76gpy37ri69yp32ajpmpxki3z5hp7mla7q")))) + +;; See tor-browser-build/projects/translation/config. +(define translation-tor-browser + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.torproject.org/tpo/translation.git") + (commit "e92772b4a11ced855c27eafd299cf972bef5cd8f"))) + (file-name "translation-tor-browser") + (sha256 + (base32 + "0q3gcq7s58110d9y4x8zyby6cn36msry6z3va7xw8sam3pp7p8nj")))) + (define torbrowser-assets ;; This is a prebuilt Torbrowser from which we take the assets we need. (package @@ -581,6 +611,8 @@ (define-public torbrowser ;; $HOME/.mozbuild). (setenv "MOZBUILD_STATE_PATH" (in-vicinity (getcwd) ".mozbuild")) + (setenv "MOZ_CHROME_MULTILOCALE" + (string-join '#$%torbrowser-locales)) ;; Make build reproducible. (setenv "MOZ_BUILD_DATE" #$%moz-build-date))) (add-before 'configure 'mozconfig @@ -594,6 +626,79 @@ (define-public torbrowser (replace 'configure (lambda _ (invoke "./mach" "configure"))) + ;; See tor-browser-build/projects/firefox/build. + (add-before 'configure 'copy-firefox-locales + (lambda _ + (let ((l10ncentral ".mozbuild/l10n-central")) + (mkdir-p l10ncentral) + (for-each + (lambda (lang) + (copy-recursively (find (lambda (path) + (string-suffix? lang path)) + '#$all-mozilla-locales) + (in-vicinity l10ncentral lang))) + '#$%torbrowser-locales)))) + (add-after 'copy-firefox-locales 'copy-basebrowser-locales + (lambda _ + (let ((l10ncentral ".mozbuild/l10n-central")) + ;; Temporary copy so that we can use ‘mv’ to mimic + ;; tor-browser-build/projects/firefox/build. + (copy-recursively #$translation-base-browser + "translation-base-browser") + (for-each + (lambda (lang) + (system + (format + #f (string-join + '("mv" + "translation-base-browser/~a/base-browser.ftl" + "~a/~a/browser/browser/")) + lang l10ncentral lang)) + (system + (format + #f (string-join + '("mv" + "translation-base-browser/~a/*" + "~a/~a/browser/chrome/browser/")) + lang l10ncentral lang))) + '#$%torbrowser-locales)))) + (add-after 'copy-basebrowser-locales 'copy-torbrowser-locales + (lambda _ + (let ((l10ncentral ".mozbuild/l10n-central")) + ;; Temporary copy so that we can use ‘mv’ to mimic + ;; tor-browser-build/projects/firefox/build. + (copy-recursively #$translation-tor-browser + "translation-tor-browser") + (for-each + (lambda (lang) + (system + (format + #f (string-join + '("mv" + "translation-tor-browser/~a/tor-browser.ftl" + "~a/~a/browser/browser/")) + lang l10ncentral lang)) + (system + (format + #f (string-join + '("mv" + "translation-tor-browser/~a/cryptoSafetyPrompt.properties" + "~a/~a/browser/chrome/browser/")) + lang l10ncentral lang)) + (system + (format + #f (string-join + '("mv" + "translation-tor-browser/~a" + "toolkit/torbutton/chrome/locale/")) + lang)) + (let ((port (open-file "toolkit/torbutton/jar.mn" "a"))) + (format port "% locale torbutton ~a %locale/~a/~%" + lang lang) + (format port " locale/~a/ (chrome/locale/~a/*)~%" + lang lang) + (close port))) + '#$%torbrowser-locales)))) (add-before 'build 'fix-addons-placeholder (lambda _ (substitute* @@ -607,6 +712,11 @@ (define-public torbrowser "#include ../../../tools/torbrowser/bridges.js" port) (newline port) (close port)))) + ;; See tor-browser-build/projects/firefox/build. + (add-after 'build 'build-locales + (lambda _ + (system (string-join '("./mach package-multi-locale --locales" + "en-US $MOZ_CHROME_MULTILOCALE"))))) (add-after 'install 'deploy-assets (lambda* (#:key inputs #:allow-other-keys) (let ((assets #$(this-package-input "torbrowser-assets")) base-commit: 551d013a56bf7d22bac80e0fd21d971973c3cf6f -- 2.41.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.