[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [Git][tpo/applications/tor-browser][tor-browser-153.0a1-16.0-2] 3 commits: fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in...



Title: GitLab

morgan pushed to branch tor-browser-153.0a1-16.0-2 at The Tor Project / Applications / Tor Browser

Commits:

  • 36f1d1c6
    by Henry Wilkes at 2026-07-14T15:24:00+00:00
    fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
    
    TB 45029: Add the connection status pane to the connection settings
    config.
    
  • 8beb26de
    by Henry Wilkes at 2026-07-14T15:24:00+00:00
    fixup! Tor Browser strings
    
    TB 45029: Add connection status strings.
    
  • 31a4963d
    by Henry Wilkes at 2026-07-14T15:24:00+00:00
    fixup! Tor Browser localization migration scripts.
    
    TB 45029: Migrate connection status strings.
    

10 changed files:

Changes:

  • browser/components/preferences/preferences.js
    ... ... @@ -116,6 +116,7 @@ ChromeUtils.defineESModuleGetters(this, {
    116 116
         "resource:///modules/SelectionChangedMenulist.sys.mjs",
    
    117 117
       ShortcutUtils: "resource://gre/modules/ShortcutUtils.sys.mjs",
    
    118 118
       SiteDataManager: "resource:///modules/SiteDataManager.sys.mjs",
    
    119
    +  TorConnect: "resource://gre/modules/TorConnect.sys.mjs",
    
    119 120
       TransientPrefs: "resource:///modules/TransientPrefs.sys.mjs",
    
    120 121
       UIState: "resource://services-sync/UIState.sys.mjs",
    
    121 122
       UpdateUtils: "resource://gre/modules/UpdateUtils.sys.mjs",
    
    ... ... @@ -267,6 +268,16 @@ const CONFIG_PANES = Object.freeze({
    267 268
         visible: () =>
    
    268 269
           Services.prefs.getBoolPref("browser.settings-redesign.enabled", false),
    
    269 270
       },
    
    271
    +  connection: {
    
    272
    +    l10nId: "tor-connection-settings-pane",
    
    273
    +    iconSrc: "chrome://browser/content/torconnect/tor-connect.svg",
    
    274
    +    groupIds: ["connectionStatus"],
    
    275
    +    module: "chrome://browser/content/torpreferences/config/connection.mjs",
    
    276
    +    visible: () => {
    
    277
    +      return TorConnect.enabled;
    
    278
    +    },
    
    279
    +    replaces: "connection",
    
    280
    +  },
    
    270 281
       connectionSecurity: {
    
    271 282
         parent: "privacy",
    
    272 283
         l10nId: "preferences-connection-header",
    

  • browser/components/preferences/preferences.xhtml
    ... ... @@ -108,6 +108,7 @@
    108 108
       <script type="module" src="">"chrome://browser/content/preferences/widgets/update-information.mjs"></script>
    
    109 109
       <script type="module" src="">"chrome://browser/content/preferences/widgets/update-state.mjs"></script>
    
    110 110
       <script type="module" src="">"chrome://browser/content/ipprotection/bandwidth-usage.mjs"></script>
    
    111
    +  <script type="module" src="">"chrome://browser/content/torpreferences/widgets/tor-connection-status.mjs"></script>
    
    111 112
       <script src="">"chrome://browser/content/torpreferences/bridgemoji/BridgeEmoji.js"/>
    
    112 113
     </head>
    
    113 114
     
    
    ... ... @@ -150,6 +151,11 @@
    150 151
             iconsrc="chrome://browser/skin/preferences/category-privacy-security.svg"
    
    151 152
             data-l10n-id="pane-privacy-title3">
    
    152 153
           </html:moz-page-nav-button>
    
    154
    +      <html:moz-page-nav-button id="category-connection"
    
    155
    +        view="paneConnection"
    
    156
    +        iconsrc="chrome://browser/content/torconnect/tor-connect.svg"
    
    157
    +        data-l10n-id="tor-connection-settings-nav-button">
    
    158
    +      </html:moz-page-nav-button>
    
    153 159
           <html:moz-page-nav-button id="category-passwords-autofill"
    
    154 160
             view="panePasswordsAutofill"
    
    155 161
             iconsrc="chrome://browser/skin/login.svg"
    
    ... ... @@ -220,8 +226,6 @@
    220 226
           <!-- Hide the translations sub-pane. tor-browser#44710. -->
    
    221 227
           <html:moz-page-nav-button hidden="true" class="hidden-category" view="paneTranslations"/>
    
    222 228
     
    
    223
    -#include ../torpreferences/content/connectionCategory.inc.xhtml
    
    224
    -
    
    225 229
           <!-- Footer links -->
    
    226 230
           <html:moz-page-nav-button id="addonsButton"
    
    227 231
             slot="secondary-nav"
    

  • browser/components/torpreferences/config/connection.mjs
    1
    +import { SettingGroupManager } from "chrome://browser/content/preferences/config/SettingGroupManager.mjs";
    
    2
    +import { Preferences } from "chrome://global/content/preferences/Preferences.mjs";
    
    3
    +
    
    4
    +const lazy = {};
    
    5
    +ChromeUtils.defineESModuleGetters(lazy, {
    
    6
    +  InternetStatus: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
    
    7
    +  TorConnect: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
    
    8
    +  TorConnectStage: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
    
    9
    +  TorConnectTopics: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
    
    10
    +});
    
    11
    +
    
    12
    +SettingGroupManager.registerGroups({
    
    13
    +  connectionStatus: {
    
    14
    +    inProgress: true,
    
    15
    +    l10nId: "tor-connection-internet-status-group",
    
    16
    +    supportPage: "tor-manual:about",
    
    17
    +    headingLevel: 2,
    
    18
    +    items: [
    
    19
    +      {
    
    20
    +        id: "connectionStatusGroup",
    
    21
    +        control: "moz-box-group",
    
    22
    +        items: [
    
    23
    +          {
    
    24
    +            id: "internetStatus",
    
    25
    +            control: "tor-connection-status",
    
    26
    +            controlAttrs: { "status-type": "internet" },
    
    27
    +          },
    
    28
    +          {
    
    29
    +            id: "torStatus",
    
    30
    +            control: "tor-connection-status",
    
    31
    +            controlAttrs: { "status-type": "tor" },
    
    32
    +          },
    
    33
    +        ],
    
    34
    +      },
    
    35
    +      {
    
    36
    +        id: "connectAutomatically",
    
    37
    +        l10nId: "tor-connection-quickstart-checkbox",
    
    38
    +        control: "moz-toggle",
    
    39
    +      },
    
    40
    +    ],
    
    41
    +  },
    
    42
    +});
    
    43
    +
    
    44
    +Preferences.addSetting({
    
    45
    +  id: "connectionStatusGroup",
    
    46
    +});
    
    47
    +
    
    48
    +Preferences.addSetting({
    
    49
    +  id: "internetStatus",
    
    50
    +  setup(emitChange) {
    
    51
    +    Services.obs.addObserver(
    
    52
    +      emitChange,
    
    53
    +      lazy.TorConnectTopics.InternetStatusChange
    
    54
    +    );
    
    55
    +    return () => {
    
    56
    +      Services.obs.removeObserver(
    
    57
    +        emitChange,
    
    58
    +        lazy.TorConnectTopics.InternetStatusChange
    
    59
    +      );
    
    60
    +    };
    
    61
    +  },
    
    62
    +  get() {
    
    63
    +    switch (lazy.TorConnect.internetStatus) {
    
    64
    +      case lazy.InternetStatus.Online:
    
    65
    +        return "online";
    
    66
    +      case lazy.InternetStatus.Offline:
    
    67
    +        return "offline";
    
    68
    +    }
    
    69
    +    return "unknown";
    
    70
    +  },
    
    71
    +});
    
    72
    +
    
    73
    +Preferences.addSetting({
    
    74
    +  id: "torStatus",
    
    75
    +  setup(emitChange) {
    
    76
    +    Services.obs.addObserver(emitChange, lazy.TorConnectTopics.StageChange);
    
    77
    +    return () => {
    
    78
    +      Services.obs.removeObserver(
    
    79
    +        emitChange,
    
    80
    +        lazy.TorConnectTopics.StageChange
    
    81
    +      );
    
    82
    +    };
    
    83
    +  },
    
    84
    +  get() {
    
    85
    +    if (lazy.TorConnect.stageName === lazy.TorConnectStage.Bootstrapped) {
    
    86
    +      return "connected";
    
    87
    +    }
    
    88
    +    if (lazy.TorConnect.potentiallyBlocked) {
    
    89
    +      return "potentially-blocked";
    
    90
    +    }
    
    91
    +    return "not-connected";
    
    92
    +  },
    
    93
    +});
    
    94
    +
    
    95
    +Preferences.addSetting({
    
    96
    +  id: "connectAutomatically",
    
    97
    +  setup(emitChange) {
    
    98
    +    Services.obs.addObserver(
    
    99
    +      emitChange,
    
    100
    +      lazy.TorConnectTopics.QuickstartChange
    
    101
    +    );
    
    102
    +    return () => {
    
    103
    +      Services.obs.removeObserver(
    
    104
    +        emitChange,
    
    105
    +        lazy.TorConnectTopics.QuickstartChange
    
    106
    +      );
    
    107
    +    };
    
    108
    +  },
    
    109
    +  get() {
    
    110
    +    return lazy.TorConnect.quickstart;
    
    111
    +  },
    
    112
    +  set(val) {
    
    113
    +    lazy.TorConnect.quickstart = val;
    
    114
    +  },
    
    115
    +});

  • browser/components/torpreferences/content/connectionCategory.inc.xhtml deleted
    1
    -<html:moz-page-nav-button id="category-connection"
    
    2
    -  view="paneConnection"
    
    3
    -  iconsrc="chrome://browser/content/torconnect/tor-connect.svg"
    
    4
    -  data-l10n-id="tor-connection-settings-heading"
    
    5
    -  hidden="true">
    
    6
    -</html:moz-page-nav-button>

  • browser/components/torpreferences/content/connectionPane.inc.xhtml
    ... ... @@ -10,6 +10,7 @@
    10 10
         class="subcategory"
    
    11 11
         data-category="paneConnection"
    
    12 12
         hidden="true"
    
    13
    +    data-srd-groupid="connectionStatus"
    
    13 14
       >
    
    14 15
         <html:h1 data-l10n-id="tor-connection-settings-heading"></html:h1>
    
    15 16
         <description class="description-deemphasized" flex="1">
    
    ... ... @@ -67,7 +68,11 @@
    67 68
       </vbox>
    
    68 69
     
    
    69 70
       <!-- Quickstart -->
    
    70
    -  <groupbox data-category="paneConnection" hidden="true">
    
    71
    +  <groupbox
    
    72
    +    data-category="paneConnection"
    
    73
    +    hidden="true"
    
    74
    +    data-srd-groupid="connectionStatus"
    
    75
    +  >
    
    71 76
         <label>
    
    72 77
           <html:h2 data-l10n-id="tor-connection-automatic-heading"></html:h2>
    
    73 78
         </label>
    
    ... ... @@ -85,7 +90,12 @@
    85 90
       </groupbox>
    
    86 91
     
    
    87 92
       <!-- Bridges -->
    
    88
    -  <hbox class="subcategory" data-category="paneConnection" hidden="true">
    
    93
    +  <hbox
    
    94
    +    class="subcategory"
    
    95
    +    data-category="paneConnection"
    
    96
    +    hidden="true"
    
    97
    +    data-srd-groupid="connectionStatus"
    
    98
    +  >
    
    89 99
         <html:h1
    
    90 100
           id="tor-bridges-subcategory-heading-non-search"
    
    91 101
           class="tor-bridges-subcategory-heading tor-focusable-heading"
    
    ... ... @@ -98,6 +108,7 @@
    98 108
         data-category="paneConnection"
    
    99 109
         hidden="true"
    
    100 110
         aria-labelledby="tor-bridges-subcategory-heading-non-search"
    
    111
    +    data-srd-groupid="connectionStatus"
    
    101 112
       >
    
    102 113
         <!-- Add a search-header that only appears in search results as a substitute
    
    103 114
            - for the hidden h1 element. See tor-browser#43320.
    
    ... ... @@ -580,7 +591,12 @@
    580 591
       </groupbox>
    
    581 592
     
    
    582 593
       <!-- Advanced -->
    
    583
    -  <hbox class="subcategory" data-category="paneConnection" hidden="true">
    
    594
    +  <hbox
    
    595
    +    class="subcategory"
    
    596
    +    data-category="paneConnection"
    
    597
    +    hidden="true"
    
    598
    +    data-srd-groupid="connectionStatus"
    
    599
    +  >
    
    584 600
         <html:h1
    
    585 601
           id="tor-advanced-subcategory-heading-non-search"
    
    586 602
           data-l10n-id="tor-advanced-settings-heading"
    
    ... ... @@ -591,6 +607,7 @@
    591 607
         data-category="paneConnection"
    
    592 608
         hidden="true"
    
    593 609
         aria-labelledby="tor-advanced-subcategory-heading-non-search"
    
    610
    +    data-srd-groupid="connectionStatus"
    
    594 611
       >
    
    595 612
         <!-- Add a search-header that only appears in search results as a substitute
    
    596 613
            - for the hidden h1 element. See tor-browser#43320.
    

  • browser/components/torpreferences/jar.mn
    ... ... @@ -24,9 +24,11 @@ browser.jar:
    24 24
         content/browser/torpreferences/provideBridgeDialog.js            (content/provideBridgeDialog.js)
    
    25 25
         content/browser/torpreferences/requestBridgeDialog.xhtml         (content/requestBridgeDialog.xhtml)
    
    26 26
         content/browser/torpreferences/requestBridgeDialog.js            (content/requestBridgeDialog.js)
    
    27
    -    content/browser/torpreferences/connectionCategory.inc.xhtml      (content/connectionCategory.inc.xhtml)
    
    28 27
         content/browser/torpreferences/torLogDialog.js                   (content/torLogDialog.js)
    
    29 28
         content/browser/torpreferences/torLogDialog.xhtml                (content/torLogDialog.xhtml)
    
    29
    +    content/browser/torpreferences/config/connection.mjs             (config/connection.mjs)
    
    30
    +    content/browser/torpreferences/widgets/tor-connection-status.mjs (widgets/tor-connection-status.mjs)
    
    31
    +    content/browser/torpreferences/widgets/tor-connection-status.css (widgets/tor-connection-status.css)
    
    30 32
         content/browser/torpreferences/connectionPane.js                 (content/connectionPane.js)
    
    31 33
         content/browser/torpreferences/torPreferences.css                (content/torPreferences.css)
    
    32 34
         content/browser/torpreferences/bridgemoji/BridgeEmoji.js         (content/bridgemoji/BridgeEmoji.js)
    

  • browser/components/torpreferences/widgets/tor-connection-status.css
    1
    +.tor-status-container {
    
    2
    +  padding: var(--box-padding);
    
    3
    +
    
    4
    +  &.tor-status-icon-warning {
    
    5
    +    --box-icon-stroke: var(--icon-color-critical);
    
    6
    +  }
    
    7
    +}
    
    8
    +
    
    9
    +.tor-status-label {
    
    10
    +  display: flex;
    
    11
    +  align-items: center;
    
    12
    +  gap: var(--space-medium);
    
    13
    +  & > * {
    
    14
    +    flex: 0 0 auto;
    
    15
    +  }
    
    16
    +  & > p {
    
    17
    +    margin: 0;
    
    18
    +  }
    
    19
    +}
    
    20
    +
    
    21
    +.tor-status-name {
    
    22
    +  font-weight: var(--font-weight-semibold);
    
    23
    +}

  • browser/components/torpreferences/widgets/tor-connection-status.mjs
    1
    +import { MozBoxBase } from "chrome://global/content/lit-utils.mjs";
    
    2
    +import {
    
    3
    +  classMap,
    
    4
    +  html,
    
    5
    +  ifDefined,
    
    6
    +} from "chrome://global/content/vendor/lit.all.mjs";
    
    7
    +
    
    8
    +const lazy = {};
    
    9
    +ChromeUtils.defineESModuleGetters(lazy, {
    
    10
    +  TorConnectParent:
    
    11
    +    "moz-src:///browser/components/torconnect/TorConnectParent.sys.mjs",
    
    12
    +});
    
    13
    +
    
    14
    +/**
    
    15
    + * Widget for displaying the current internet or Tor connection status.
    
    16
    + *
    
    17
    + * @tagname tor-connection-status
    
    18
    + * @property {"internet" | "tor"} statusType - The type of status this widget is
    
    19
    + *   showing.
    
    20
    + * @property {string} value - The current status value.
    
    21
    + */
    
    22
    +class TorConnectionStatus extends MozBoxBase {
    
    23
    +  static properties = {
    
    24
    +    statusType: { type: String, attribute: "status-type" },
    
    25
    +    value: { type: String },
    
    26
    +    _nameL10nId: { type: String },
    
    27
    +    _valueL10nId: { type: String },
    
    28
    +    _iconWarning: { type: Boolean },
    
    29
    +    _connectButton: { type: Boolean },
    
    30
    +  };
    
    31
    +
    
    32
    +  /**
    
    33
    +   * A map from the status type to it's configuration. Each configuration is
    
    34
    +   * used to set the internal properties depending on the current value.
    
    35
    +   *
    
    36
    +   * @type {{[key: string]: object}}
    
    37
    +   */
    
    38
    +  static #config = {
    
    39
    +    internet: {
    
    40
    +      nameL10nId: "tor-connection-internet-status-label",
    
    41
    +      values: {
    
    42
    +        online: {
    
    43
    +          iconSrc: "chrome://browser/content/torconnect/network.svg",
    
    44
    +          valueL10nId: "tor-connection-internet-status-online",
    
    45
    +        },
    
    46
    +        offline: {
    
    47
    +          iconSrc: "chrome://browser/content/torconnect/network-broken.svg",
    
    48
    +          valueL10nId: "tor-connection-internet-status-offline",
    
    49
    +        },
    
    50
    +        unknown: {
    
    51
    +          iconSrc: "chrome://browser/content/torconnect/network.svg",
    
    52
    +          valueL10nId: "tor-connection-internet-status-unknown",
    
    53
    +        },
    
    54
    +      },
    
    55
    +    },
    
    56
    +    tor: {
    
    57
    +      nameL10nId: "tor-connection-network-status-label",
    
    58
    +      values: {
    
    59
    +        connected: {
    
    60
    +          iconSrc: "chrome://browser/content/torconnect/tor-connect.svg",
    
    61
    +          valueL10nId: "tor-connection-network-status-connected",
    
    62
    +        },
    
    63
    +        "not-connected": {
    
    64
    +          iconSrc: "chrome://browser/content/torconnect/tor-connect-broken.svg",
    
    65
    +          valueL10nId: "tor-connection-network-status-not-connected",
    
    66
    +          connectButton: true,
    
    67
    +        },
    
    68
    +        "potentially-blocked": {
    
    69
    +          iconSrc: "chrome://browser/content/torconnect/tor-connect-broken.svg",
    
    70
    +          valueL10nId: "tor-connection-network-status-blocked",
    
    71
    +          iconWarning: true,
    
    72
    +          connectButton: true,
    
    73
    +        },
    
    74
    +      },
    
    75
    +    },
    
    76
    +  };
    
    77
    +
    
    78
    +  /**
    
    79
    +   * Whether we had focus prior to an update.
    
    80
    +   *
    
    81
    +   * @type {boolean}
    
    82
    +   */
    
    83
    +  #hadFocus = false;
    
    84
    +
    
    85
    +  willUpdate() {
    
    86
    +    const config = TorConnectionStatus.#config[this.statusType];
    
    87
    +    const valueConfig = config?.values[this.value];
    
    88
    +    this._nameL10nId = config?.nameL10nId;
    
    89
    +    this._valueL10nId = valueConfig?.valueL10nId;
    
    90
    +    this.iconSrc = valueConfig?.iconSrc;
    
    91
    +    this._iconWarning = valueConfig?.iconWarning ?? false;
    
    92
    +    this._connectButton = valueConfig?.connectButton ?? false;
    
    93
    +    this.#hadFocus = !!this.shadowRoot.activeElement;
    
    94
    +  }
    
    95
    +
    
    96
    +  updated() {
    
    97
    +    if (this.#hadFocus && !this.shadowRoot.activeElement) {
    
    98
    +      // Focus is lost. We move focus to the search input.
    
    99
    +      window.gSearchResultsPane.searchInput.focus();
    
    100
    +    }
    
    101
    +    this.#hadFocus = false;
    
    102
    +  }
    
    103
    +
    
    104
    +  connectButtonClick() {
    
    105
    +    lazy.TorConnectParent.open({ beginBootstrapping: "soft" });
    
    106
    +  }
    
    107
    +
    
    108
    +  connectButtonTemplate() {
    
    109
    +    if (!this._connectButton) {
    
    110
    +      return "";
    
    111
    +    }
    
    112
    +    return html`
    
    113
    +      <moz-button
    
    114
    +        data-l10n-id="tor-connection-status-connect-button"
    
    115
    +        @click=${this.connectButtonClick}
    
    116
    +      ></moz-button>
    
    117
    +    `;
    
    118
    +  }
    
    119
    +
    
    120
    +  // override MozBoxBase.labelTemplate.
    
    121
    +  labelTemplate() {
    
    122
    +    if (!this._nameL10nId) {
    
    123
    +      return "";
    
    124
    +    }
    
    125
    +    // NOTE: We purposefully include whitespace between the inner <span>
    
    126
    +    // elements so their text is separated.
    
    127
    +    return html`<div class="label tor-status-label">
    
    128
    +      <p>
    
    129
    +        <span
    
    130
    +          class="tor-status-name"
    
    131
    +          data-l10n-id=${this._nameL10nId}
    
    132
    +        ></span>
    
    133
    +        <span data-l10n-id=${ifDefined(this._valueL10nId)}></span>
    
    134
    +      </p>
    
    135
    +      ${this.connectButtonTemplate()}
    
    136
    +    </span> `;
    
    137
    +  }
    
    138
    +
    
    139
    +  render() {
    
    140
    +    if (!this._nameL10nId) {
    
    141
    +      return "";
    
    142
    +    }
    
    143
    +    // NOTE: textTemplate comes from MozBoxBase, which will include an icon
    
    144
    +    // followed by our label.
    
    145
    +    return html`
    
    146
    +      ${this.stylesTemplate()}
    
    147
    +      <link
    
    148
    +        rel="stylesheet"
    
    149
    +        href=""
    
    150
    +      />
    
    151
    +      <div
    
    152
    +        class=${classMap({
    
    153
    +          "tor-status-container": true,
    
    154
    +          "tor-status-icon-warning": this._iconWarning,
    
    155
    +        })}
    
    156
    +      >
    
    157
    +        ${super.textTemplate()}
    
    158
    +      </div>
    
    159
    +    `;
    
    160
    +  }
    
    161
    +}
    
    162
    +customElements.define("tor-connection-status", TorConnectionStatus);

  • toolkit/locales/en-US/toolkit/global/tor-browser.ftl
    ... ... @@ -55,10 +55,12 @@ home-mode-choice-tor =
    55 55
     
    
    56 56
     # "Connection" refers to the Tor Browser's connection to the Tor network.
    
    57 57
     tor-connection-settings-heading = Connection
    
    58
    -# The tooltip text for the "Connection" settings, shown in the preferences side bar.
    
    59
    -# Likely should just be "{ tor-connection-settings-heading }", which will match the displayed text exactly.
    
    60
    -tor-connection-settings-category =
    
    61
    -    .tooltiptext = { tor-connection-settings-heading }
    
    58
    +# "Connection" refers to the Tor Browser's connection to the Tor network.
    
    59
    +tor-connection-settings-pane =
    
    60
    +    .heading = Connection
    
    61
    +# "Connection" refers to the Tor Browser's connection to the Tor network.
    
    62
    +tor-connection-settings-nav-button = Connection
    
    63
    +    .title = Connection
    
    62 64
     # -brand-short-name refers to 'Tor Browser', localized.
    
    63 65
     tor-connection-overview = { -brand-short-name } routes your traffic over the Tor network, run by thousands of volunteers around the world.
    
    64 66
     tor-connection-browser-learn-more-link = Learn more
    
    ... ... @@ -67,6 +69,10 @@ tor-connection-automatic-description = Automatically connect to the Tor network
    67 69
     tor-connection-quickstart-checkbox =
    
    68 70
         .label = Always connect automatically
    
    69 71
     
    
    72
    +# "{ -brand-short-name }" will be replaced with the localized name of the browser, e.g. "Tor Browser".
    
    73
    +tor-connection-internet-status-group =
    
    74
    +    .label = Connection status
    
    75
    +    .description = { -brand-short-name } routes your traffic over the Tor network, run by thousands of volunteers around the world.
    
    70 76
     # Prefix before the internet connection status.
    
    71 77
     # "Internet" is not a proper noun, but is capitalized because it is the start of a sentence.
    
    72 78
     tor-connection-internet-status-label = Internet:
    
    ... ... @@ -96,6 +102,10 @@ tor-connection-network-status-blocked = Potentially blocked
    96 102
     # It will open a page to start connecting to the Tor network.
    
    97 103
     # Uses sentence case in English (US).
    
    98 104
     tor-connection-network-status-connect-button = Connect
    
    105
    +# Here "Connect" refers to connecting to the Tor network.
    
    106
    +# Uses sentence case in English (US).
    
    107
    +tor-connection-status-connect-button =
    
    108
    +    .label = Connect
    
    99 109
     
    
    100 110
     ## Tor Bridges Settings.
    
    101 111
     
    

  • tools/torbrowser/l10n/migrations/bug-45029-connection-status.py
    1
    +from fluent.migrate.helpers import transforms_from
    
    2
    +
    
    3
    +
    
    4
    +def migrate(ctx):
    
    5
    +    ctx.add_transforms(
    
    6
    +        "tor-browser.ftl",
    
    7
    +        "tor-browser.ftl",
    
    8
    +        transforms_from(
    
    9
    +            """
    
    10
    +tor-connection-settings-pane =
    
    11
    +    .heading = { COPY_PATTERN(path, "tor-connection-settings-heading") }
    
    12
    +tor-connection-settings-nav-button = { COPY_PATTERN(path, "tor-connection-settings-heading") }
    
    13
    +    .title = { COPY_PATTERN(path, "tor-connection-settings-heading") }
    
    14
    +tor-connection-status-connect-button =
    
    15
    +    .label = { COPY_PATTERN(path, "tor-connection-network-status-connect-button") }
    
    16
    +""",
    
    17
    +            path="tor-browser.ftl",
    
    18
    +        ),
    
    19
    +    )

  • _______________________________________________
    tor-commits mailing list -- tor-commits@xxxxxxxxxxxxxxxxxxxx
    To unsubscribe send an email to tor-commits-leave@xxxxxxxxxxxxxxxxxxxx