60fbe32
diff -Nrup -U 4 seamonkey-2.53.3/suite/components/pref/content/pref-appearance.js seamonkey-2.53.3-OK/suite/components/pref/content/pref-appearance.js
60fbe32
--- seamonkey-2.53.3/suite/components/pref/content/pref-appearance.js	2020-02-18 02:36:20.000000000 +0300
60fbe32
+++ seamonkey-2.53.3-OK/suite/components/pref/content/pref-appearance.js	2020-07-28 22:01:39.571612425 +0300
60fbe32
@@ -9,8 +9,16 @@ ChromeUtils.import("resource://gre/modul
60fbe32
 function Startup()
60fbe32
 {
60fbe32
   SwitchLocales_Load();
60fbe32
   NumberLocales_Load();
60fbe32
+
60fbe32
+  var localeMatchOS = document.getElementById("intl.locale.matchOS");
60fbe32
+  EnableSwitchLocales(!localeMatchOS.value);
60fbe32
+}
60fbe32
+
60fbe32
+function EnableSwitchLocales(aEnable)
60fbe32
+{
60fbe32
+  EnableElementById("switchLocales", aEnable, false);
60fbe32
 }
60fbe32
 
60fbe32
 /**
60fbe32
  * From locale switcher's switch.js:
60fbe32
@@ -96,21 +104,31 @@ function NumberLocales_Load()
60fbe32
       .getService(Ci.mozIOSPreferences);
60fbe32
 
60fbe32
   let appLocale = Services.locale.getAppLocalesAsBCP47()[0];
60fbe32
   let rsLocale = osprefs.getRegionalPrefsLocales()[0];
60fbe32
+  let sysLocale = osprefs.getSystemLocales()[0];
60fbe32
+
60fbe32
   let spellChecker = new InlineSpellChecker();
60fbe32
   appLocale = spellChecker.getDictionaryDisplayName(appLocale);
60fbe32
   rsLocale = spellChecker.getDictionaryDisplayName(rsLocale);
60fbe32
+  sysLocale = spellChecker.getDictionaryDisplayName(sysLocale);
60fbe32
 
60fbe32
   let appLocaleRadio = document.getElementById("appLocale");
60fbe32
   let rsLocaleRadio = document.getElementById("rsLocale");
60fbe32
+  let sysLocaleCheckbox = document.getElementById("localeMatchOS");
60fbe32
+
60fbe32
   let prefutilitiesBundle = document.getElementById("bundle_prefutilities");
60fbe32
 
60fbe32
   let appLocaleLabel = prefutilitiesBundle.getFormattedString("appLocale.label",
60fbe32
                                                               [appLocale]);
60fbe32
   let rsLocaleLabel = prefutilitiesBundle.getFormattedString("rsLocale.label",
60fbe32
                                                              [rsLocale]);
60fbe32
+  let sysLocaleLabel = prefutilitiesBundle.getFormattedString("sysLocale.label",
60fbe32
+                                                             [sysLocale]);
60fbe32
   appLocaleRadio.setAttribute("label", appLocaleLabel);
60fbe32
   rsLocaleRadio.setAttribute("label", rsLocaleLabel);
60fbe32
+  sysLocaleCheckbox.setAttribute("label", sysLocaleLabel);
60fbe32
+
60fbe32
   appLocaleRadio.accessKey = prefutilitiesBundle.getString("appLocale.accesskey");
60fbe32
   rsLocaleRadio.accessKey = prefutilitiesBundle.getString("rsLocale.accesskey");
60fbe32
+  sysLocaleCheckbox.accessKey = prefutilitiesBundle.getString("sysLocale.accesskey");
60fbe32
 }
60fbe32
diff -Nrup -U 4 seamonkey-2.53.3/suite/components/pref/content/pref-appearance.xul seamonkey-2.53.3-OK/suite/components/pref/content/pref-appearance.xul
60fbe32
--- seamonkey-2.53.3/suite/components/pref/content/pref-appearance.xul	2020-06-06 23:01:30.000000000 +0300
60fbe32
+++ seamonkey-2.53.3-OK/suite/components/pref/content/pref-appearance.xul	2020-07-28 22:04:13.411377258 +0300
60fbe32
@@ -29,8 +29,12 @@
60fbe32
                   type="bool"/>
60fbe32
       
60fbe32
                   name="general.useragent.locale"
60fbe32
                   type="string"/>
60fbe32
+      
60fbe32
+                  name="intl.locale.matchOS"
60fbe32
+                  type="bool"
60fbe32
+                  onchange="EnableSwitchLocales(!this.value);"/>
60fbe32
       
60fbe32
                   name="intl.regional_prefs.use_os_locales"
60fbe32
                   type="bool"/>
60fbe32
     </preferences>
60fbe32
@@ -81,8 +85,11 @@
60fbe32
     <groupbox id="switchLocaleBox" align="start">
60fbe32
       <caption label="&pref.locales.title;"/>
60fbe32
       <description>&selectLocale.label;</description>
60fbe32
 
60fbe32
+      
60fbe32
+                preference="intl.locale.matchOS"/>
60fbe32
+                
60fbe32
       
60fbe32
                 preference="general.useragent.locale"
60fbe32
                 onsyncfrompreference="return document.getElementById('appearance_pane').SelectLocale(this);"/>
60fbe32
 
60fbe32
diff -Nrup -U 4 seamonkey-2.53.3/suite/locales/en-US/chrome/common/pref/prefutilities.properties seamonkey-2.53.3-OK/suite/locales/en-US/chrome/common/pref/prefutilities.properties
60fbe32
--- seamonkey-2.53.3/suite/locales/en-US/chrome/common/pref/prefutilities.properties	2020-02-18 02:36:20.000000000 +0300
60fbe32
+++ seamonkey-2.53.3-OK/suite/locales/en-US/chrome/common/pref/prefutilities.properties	2020-07-28 22:05:10.413919602 +0300
60fbe32
@@ -38,8 +38,12 @@ appLocale.accesskey=n
60fbe32
 # LOCALIZATION NOTE (rsLocale.label): %S = Name of the locale chosen in regional settings,
60fbe32
 # e.g. German (Germany)
60fbe32
 rsLocale.label=Regional settings locale: %S
60fbe32
 rsLocale.accesskey=R
60fbe32
+# LOCALIZATION NOTE (sysLocale.label): %S = Name of the system locale,
60fbe32
+# e.g. Russian (Russia)
60fbe32
+sysLocale.label=Use system locale: %S
60fbe32
+sysLocale.accesskey=s
60fbe32
 
60fbe32
 syncUnlink.title=Do you want to unlink your device?
60fbe32
 syncUnlink.label=This device will no longer be associated with your Sync account. All of your personal data, both on this device and in your Sync account, will remain intact.
60fbe32
 syncUnlinkConfirm.label=Unlink