From 6a144364cc1fa4f9c37f9cea1c13e355f9dc71b6 Mon Sep 17 00:00:00 2001 From: "Markus S. Wamser" Date: Tue, 28 Sep 2021 08:36:26 +0200 Subject: [PATCH 1/2] firefox-bin: fix locale selection --- .../browsers/firefox-bin/default.nix | 5 +- .../browsers/firefox-bin/locales.nix | 412 ++++++++++++++++++ 2 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/networking/browsers/firefox-bin/locales.nix diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index 54763b801817..d0690bc39344 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -50,12 +50,13 @@ , ffmpeg , runtimeShell , mesa # firefox wants gbm for drm+dmabuf -, systemLocale ? config.i18n.defaultLocale or "en-US" +, systemLocale ? config.i18n.defaultLocale or "en_US" }: let inherit (generated) version sources; + mozLocale = (import ./locales.nix { lib = lib; }).mozLocale; mozillaPlatforms = { i686-linux = "linux-i686"; @@ -78,7 +79,7 @@ let defaultSource = lib.findFirst (sourceMatches "en-US") {} sources; - source = lib.findFirst (sourceMatches systemLocale) defaultSource sources; + source = lib.findFirst (sourceMatches (mozLocale systemLocale)) defaultSource sources; pname = "firefox-${channel}-bin-unwrapped"; diff --git a/pkgs/applications/networking/browsers/firefox-bin/locales.nix b/pkgs/applications/networking/browsers/firefox-bin/locales.nix new file mode 100644 index 000000000000..4e7b8bf115ee --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox-bin/locales.nix @@ -0,0 +1,412 @@ +# map from a system locale to a locale supported by Mozilla Firefox using prefix matching + +{ lib }: +let + localeMap = [ + { + sys = "ach"; + moz = "ach"; + } + { + sys = "af"; + moz = "af"; + } + { + sys = "an"; + moz = "an"; + } + { + sys = "ar"; + moz = "ar"; + } + { + sys = "ast"; + moz = "ast"; + } + { + sys = "az"; + moz = "az"; + } + { + sys = "be"; + moz = "be"; + } + { + sys = "bg"; + moz = "bg"; + } + { + sys = "bn"; + moz = "bn"; + } + { + sys = "br"; + moz = "br"; + } + { + sys = "bs"; + moz = "bs"; + } + { + sys = "ca_ES@valencia"; + moz = "ca-valencia"; + } + { + sys = "ca"; + moz = "ca"; + } + { + sys = "cak"; + moz = "cak"; + } + { + sys = "cs"; + moz = "cs"; + } + { + sys = "cy"; + moz = "cy"; + } + { + sys = "da"; + moz = "da"; + } + { + sys = "de"; + moz = "de"; + } + { + sys = "dsb"; + moz = "dsb"; + } + { + sys = "el"; + moz = "el"; + } + { + sys = "en_CA"; + moz = "en-CA"; + } + { + sys = "en_GB"; + moz = "en-GB"; + } + { + sys = "en_US"; + moz = "en-US"; + } + { + sys = "eo"; + moz = "eo"; + } + { + sys = "es_AR"; + moz = "es-AR"; + } + { + sys = "es_CL"; + moz = "es-CL"; + } + { + sys = "es_ES"; + moz = "es-ES"; + } + { + sys = "es_MX"; + moz = "es-MX"; + } + { + sys = "et"; + moz = "et"; + } + { + sys = "eu"; + moz = "eu"; + } + { + sys = "fa"; + moz = "fa"; + } + { + sys = "ff"; + moz = "ff"; + } + { + sys = "fi"; + moz = "fi"; + } + { + sys = "fr"; + moz = "fr"; + } + { + sys = "fy_NL"; + moz = "fy-NL"; + } + { + sys = "ga_IE"; + moz = "ga-IE"; + } + { + sys = "gd"; + moz = "gd"; + } + { + sys = "gl"; + moz = "gl"; + } + { + sys = "gn"; + moz = "gn"; + } + { + sys = "gu_IN"; + moz = "gu-IN"; + } + { + sys = "he"; + moz = "he"; + } + { + sys = "hi_IN"; + moz = "hi-IN"; + } + { + sys = "hr"; + moz = "hr"; + } + { + sys = "hsb"; + moz = "hsb"; + } + { + sys = "hu"; + moz = "hu"; + } + { + sys = "hy_AM"; + moz = "hy-AM"; + } + { + sys = "ia"; + moz = "ia"; + } + { + sys = "id"; + moz = "id"; + } + { + sys = "is"; + moz = "is"; + } + { + sys = "it"; + moz = "it"; + } + { + sys = "ja"; + moz = "ja"; + } + { + sys = "ka"; + moz = "ka"; + } + { + sys = "kab"; + moz = "kab"; + } + { + sys = "kk"; + moz = "kk"; + } + { + sys = "km"; + moz = "km"; + } + { + sys = "kn"; + moz = "kn"; + } + { + sys = "ko"; + moz = "ko"; + } + { + sys = "lij"; + moz = "lij"; + } + { + sys = "lt"; + moz = "lt"; + } + { + sys = "lv"; + moz = "lv"; + } + { + sys = "mk"; + moz = "mk"; + } + { + sys = "mr"; + moz = "mr"; + } + { + sys = "ms"; + moz = "ms"; + } + { + sys = "my"; + moz = "my"; + } + { + sys = "nb_NO"; + moz = "nb-NO"; + } + { + sys = "ne_NP"; + moz = "ne-NP"; + } + { + sys = "nl"; + moz = "nl"; + } + { + sys = "nn_NO"; + moz = "nn-NO"; + } + { + sys = "oc"; + moz = "oc"; + } + { + sys = "pa_IN"; + moz = "pa-IN"; + } + { + sys = "pl"; + moz = "pl"; + } + { + sys = "pt_BR"; + moz = "pt-BR"; + } + { + sys = "pt_PT"; + moz = "pt-PT"; + } + { + sys = "rm"; + moz = "rm"; + } + { + sys = "ro"; + moz = "ro"; + } + { + sys = "ru"; + moz = "ru"; + } + { + sys = "sco"; + moz = "sco"; + } + { + sys = "si"; + moz = "si"; + } + { + sys = "sk"; + moz = "sk"; + } + { + sys = "sl"; + moz = "sl"; + } + { + sys = "son"; + moz = "son"; + } + { + sys = "sq"; + moz = "sq"; + } + { + sys = "sr"; + moz = "sr"; + } + { + sys = "sv_SE"; + moz = "sv-SE"; + } + { + sys = "szl"; + moz = "szl"; + } + { + sys = "ta"; + moz = "ta"; + } + { + sys = "te"; + moz = "te"; + } + { + sys = "th"; + moz = "th"; + } + { + sys = "tl"; + moz = "tl"; + } + { + sys = "tr"; + moz = "tr"; + } + { + sys = "trs"; + moz = "trs"; + } + { + sys = "uk"; + moz = "uk"; + } + { + sys = "ur"; + moz = "ur"; + } + { + sys = "uz"; + moz = "uz"; + } + { + sys = "vi"; + moz = "vi"; + } + { + sys = "xh"; + moz = "xh"; + } + { + sys = "xpi"; + moz = "xpi"; + } + { + sys = "zh_CN"; + moz = "zh-CN"; + } + { + sys = "zh_TW"; + moz = "zh-TW"; + } + ]; + + isPrefixOf = prefix: string: + builtins.substring 0 (builtins.stringLength prefix) string == prefix; + + localeMatches = locale: source: (isPrefixOf source.sys locale); + +in { + mozLocale = sysLocale: + (lib.findFirst (localeMatches sysLocale) { moz = "en_US"; } localeMap).moz; +} From b7d06138c88bc19dbf1e41a4b3ec9450ca950d5a Mon Sep 17 00:00:00 2001 From: taku0 Date: Sat, 23 Oct 2021 14:38:49 +0900 Subject: [PATCH 2/2] firefox-bin: simplify locale selection --- .../browsers/firefox-bin/default.nix | 8 +- .../browsers/firefox-bin/locales.nix | 412 ------------------ 2 files changed, 6 insertions(+), 414 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/firefox-bin/locales.nix diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index d0690bc39344..4ab427505e34 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -56,7 +56,6 @@ let inherit (generated) version sources; - mozLocale = (import ./locales.nix { lib = lib; }).mozLocale; mozillaPlatforms = { i686-linux = "linux-i686"; @@ -79,7 +78,12 @@ let defaultSource = lib.findFirst (sourceMatches "en-US") {} sources; - source = lib.findFirst (sourceMatches (mozLocale systemLocale)) defaultSource sources; + mozLocale = + if systemLocale == "ca_ES@valencia" + then "ca-valencia" + else lib.replaceStrings ["_"] ["-"] systemLocale; + + source = lib.findFirst (sourceMatches mozLocale) defaultSource sources; pname = "firefox-${channel}-bin-unwrapped"; diff --git a/pkgs/applications/networking/browsers/firefox-bin/locales.nix b/pkgs/applications/networking/browsers/firefox-bin/locales.nix deleted file mode 100644 index 4e7b8bf115ee..000000000000 --- a/pkgs/applications/networking/browsers/firefox-bin/locales.nix +++ /dev/null @@ -1,412 +0,0 @@ -# map from a system locale to a locale supported by Mozilla Firefox using prefix matching - -{ lib }: -let - localeMap = [ - { - sys = "ach"; - moz = "ach"; - } - { - sys = "af"; - moz = "af"; - } - { - sys = "an"; - moz = "an"; - } - { - sys = "ar"; - moz = "ar"; - } - { - sys = "ast"; - moz = "ast"; - } - { - sys = "az"; - moz = "az"; - } - { - sys = "be"; - moz = "be"; - } - { - sys = "bg"; - moz = "bg"; - } - { - sys = "bn"; - moz = "bn"; - } - { - sys = "br"; - moz = "br"; - } - { - sys = "bs"; - moz = "bs"; - } - { - sys = "ca_ES@valencia"; - moz = "ca-valencia"; - } - { - sys = "ca"; - moz = "ca"; - } - { - sys = "cak"; - moz = "cak"; - } - { - sys = "cs"; - moz = "cs"; - } - { - sys = "cy"; - moz = "cy"; - } - { - sys = "da"; - moz = "da"; - } - { - sys = "de"; - moz = "de"; - } - { - sys = "dsb"; - moz = "dsb"; - } - { - sys = "el"; - moz = "el"; - } - { - sys = "en_CA"; - moz = "en-CA"; - } - { - sys = "en_GB"; - moz = "en-GB"; - } - { - sys = "en_US"; - moz = "en-US"; - } - { - sys = "eo"; - moz = "eo"; - } - { - sys = "es_AR"; - moz = "es-AR"; - } - { - sys = "es_CL"; - moz = "es-CL"; - } - { - sys = "es_ES"; - moz = "es-ES"; - } - { - sys = "es_MX"; - moz = "es-MX"; - } - { - sys = "et"; - moz = "et"; - } - { - sys = "eu"; - moz = "eu"; - } - { - sys = "fa"; - moz = "fa"; - } - { - sys = "ff"; - moz = "ff"; - } - { - sys = "fi"; - moz = "fi"; - } - { - sys = "fr"; - moz = "fr"; - } - { - sys = "fy_NL"; - moz = "fy-NL"; - } - { - sys = "ga_IE"; - moz = "ga-IE"; - } - { - sys = "gd"; - moz = "gd"; - } - { - sys = "gl"; - moz = "gl"; - } - { - sys = "gn"; - moz = "gn"; - } - { - sys = "gu_IN"; - moz = "gu-IN"; - } - { - sys = "he"; - moz = "he"; - } - { - sys = "hi_IN"; - moz = "hi-IN"; - } - { - sys = "hr"; - moz = "hr"; - } - { - sys = "hsb"; - moz = "hsb"; - } - { - sys = "hu"; - moz = "hu"; - } - { - sys = "hy_AM"; - moz = "hy-AM"; - } - { - sys = "ia"; - moz = "ia"; - } - { - sys = "id"; - moz = "id"; - } - { - sys = "is"; - moz = "is"; - } - { - sys = "it"; - moz = "it"; - } - { - sys = "ja"; - moz = "ja"; - } - { - sys = "ka"; - moz = "ka"; - } - { - sys = "kab"; - moz = "kab"; - } - { - sys = "kk"; - moz = "kk"; - } - { - sys = "km"; - moz = "km"; - } - { - sys = "kn"; - moz = "kn"; - } - { - sys = "ko"; - moz = "ko"; - } - { - sys = "lij"; - moz = "lij"; - } - { - sys = "lt"; - moz = "lt"; - } - { - sys = "lv"; - moz = "lv"; - } - { - sys = "mk"; - moz = "mk"; - } - { - sys = "mr"; - moz = "mr"; - } - { - sys = "ms"; - moz = "ms"; - } - { - sys = "my"; - moz = "my"; - } - { - sys = "nb_NO"; - moz = "nb-NO"; - } - { - sys = "ne_NP"; - moz = "ne-NP"; - } - { - sys = "nl"; - moz = "nl"; - } - { - sys = "nn_NO"; - moz = "nn-NO"; - } - { - sys = "oc"; - moz = "oc"; - } - { - sys = "pa_IN"; - moz = "pa-IN"; - } - { - sys = "pl"; - moz = "pl"; - } - { - sys = "pt_BR"; - moz = "pt-BR"; - } - { - sys = "pt_PT"; - moz = "pt-PT"; - } - { - sys = "rm"; - moz = "rm"; - } - { - sys = "ro"; - moz = "ro"; - } - { - sys = "ru"; - moz = "ru"; - } - { - sys = "sco"; - moz = "sco"; - } - { - sys = "si"; - moz = "si"; - } - { - sys = "sk"; - moz = "sk"; - } - { - sys = "sl"; - moz = "sl"; - } - { - sys = "son"; - moz = "son"; - } - { - sys = "sq"; - moz = "sq"; - } - { - sys = "sr"; - moz = "sr"; - } - { - sys = "sv_SE"; - moz = "sv-SE"; - } - { - sys = "szl"; - moz = "szl"; - } - { - sys = "ta"; - moz = "ta"; - } - { - sys = "te"; - moz = "te"; - } - { - sys = "th"; - moz = "th"; - } - { - sys = "tl"; - moz = "tl"; - } - { - sys = "tr"; - moz = "tr"; - } - { - sys = "trs"; - moz = "trs"; - } - { - sys = "uk"; - moz = "uk"; - } - { - sys = "ur"; - moz = "ur"; - } - { - sys = "uz"; - moz = "uz"; - } - { - sys = "vi"; - moz = "vi"; - } - { - sys = "xh"; - moz = "xh"; - } - { - sys = "xpi"; - moz = "xpi"; - } - { - sys = "zh_CN"; - moz = "zh-CN"; - } - { - sys = "zh_TW"; - moz = "zh-TW"; - } - ]; - - isPrefixOf = prefix: string: - builtins.substring 0 (builtins.stringLength prefix) string == prefix; - - localeMatches = locale: source: (isPrefixOf source.sys locale); - -in { - mozLocale = sysLocale: - (lib.findFirst (localeMatches sysLocale) { moz = "en_US"; } localeMap).moz; -}