[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#68503] [PATCH v2] gnu: torbrowser: Add support or language localisa
From: |
Clément Lassieur |
Subject: |
[bug#68503] [PATCH v2] gnu: torbrowser: Add support or language localisation. |
Date: |
Tue, 16 Jan 2024 14:31:17 +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]: Add ‘copy-locales’ and ‘build-locales’ phases.
Change-Id: Ia5b28fa5d885f24140893dc270e57e83b0250c67
---
gnu/packages/gnuzilla.scm | 3 +-
gnu/packages/tor.scm | 101 +++++++++++++++++++++++++++++++++++++-
2 files changed, 102 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..8752cd67ef37 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2021-2023 Danial Behzadi <dani.behzi@ubuntu.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Jim Newsome <jnewsome@torproject.org>
-;;; Copyright © 2023 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2023, 2024 Clément Lassieur <clement@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
@@ -591,6 +621,68 @@ (define-public torbrowser
(for-each (lambda (flag)
(format #t "ac_add_options ~a~%" flag))
configure-flags)))))
+ ;; See tor-browser-build/projects/firefox/build.
+ (add-before 'configure 'copy-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")
+ (copy-recursively #$translation-tor-browser
+ "translation-tor-browser")
+ (mkdir-p l10ncentral)
+ (for-each
+ (lambda (lang)
+ ;; Firefox locales
+ (copy-recursively (find (lambda (path)
+ (string-suffix? lang path))
+ '#$all-mozilla-locales)
+ (in-vicinity l10ncentral lang))
+ ;; Base Browser locales
+ (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))
+ ;; Tor Browser locales
+ (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))))
(replace 'configure
(lambda _
(invoke "./mach" "configure")))
@@ -607,6 +699,13 @@ (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 _
+ (setenv "MOZ_CHROME_MULTILOCALE"
+ (string-join '#$%torbrowser-locales))
+ (apply invoke "./mach" "package-multi-locale" "--locales"
+ "en-US" '#$%torbrowser-locales)))
(add-after 'install 'deploy-assets
(lambda* (#:key inputs #:allow-other-keys)
(let ((assets #$(this-package-input "torbrowser-assets"))
base-commit: 551d013a56bf7d22bac80e0fd21d971973c3cf6f
--
2.41.0