Project Overview
MultiLangSwitcher is a Chromium-based browser extension that helps users quickly switch the Accept-Language HTTP request header sent by the browser. Users can also customize the full Accept-Language string on the debugging tools page.
The extension utilizes the chrome.declarativeNetRequest API to modify the request header, ensuring performance and privacy.
Note: This extension is not suitable for websites that determine language based on IP address.
The website’s layout and styling are built with Bootstrap.
If the built-in request header detection fails or returns no results, you can manually navigate to BrowserScan or header-echo for further verification.
If you need to switch the browser UA, you can take a look at this project: User-Agent Switcher and Manager
Additionally, you can configure browser language settings as shown to confuse simple navigator.languages detection (though this will increase the uniqueness of your browser fingerprint).
This is a demonstration of customizing the Accept-Language string.
Features
- Language Request Header Switching: Popup interface for selecting languages and modifying
Accept-Language request headers
- Domain-Based Auto-Switching: Automatically applies corresponding language settings based on visited domains
- Supports top-level domains (e.g.,
.cn, .jp) and second-level domains (e.g., com.cn, co.jp)
- Built-in domain rules covering major countries and regions
- Defaults to English for unmatched domains
- Persistent Settings: Language preferences and auto-switch status saved to local storage
- Efficient Header Modification: Uses
chrome.declarativeNetRequest API for better performance than the WebRequest API
- Background Auto-Application: Extension automatically loads settings on startup with error retry mechanism
- Theme Switching: Support for light/dark theme switching
- Update Checker: Automatically checks GitHub Releases for the latest version information
- Reset Function: One-click reset of the Accept-Language request header
- Detection Page:
detect.html for verifying request header modifications, which detects:
Accept-Language request headers
- JavaScript language preferences (
navigator.language, navigator.languages)
- Internationalization API (Intl) information
- WebRTC local IP leakage
- Canvas, WebGL, and AudioContext fingerprinting information
- AI Diagnosis panel with OpenAI-compatible providers, multi-turn chat, per-provider local config, Markdown export, and message copy actions
- Debugging Tools:
debug.html provides debugging and diagnostic features, including:
- View
declarativeNetRequest dynamic rule details
- Multi-endpoint request header testing
- Custom
Accept-Language strings (e.g., en-US,en;q=0.9,zh-CN;q=0.8)
- Real-time log display with category filtering
- Rule priority fixes and rule rebuilding
- Extension diagnostic information (version, permissions, configuration, storage status)
- Domain-language mapping rules viewer
- Reset Accept-Language request header
Installation Guide
Install from Chrome Web Store / Microsoft Edge Extensions Home (Not Published)
Currently, only installation from source code is supported.
Note: This extension has not been published to the Chrome Web Store due to the developer not registering a Google developer account.
Install from Source Code
-
Download or Clone the Code: Clone the project repository to your local computer (Or download the ZIP from the release and unzip it)
git clone https://github.com/ChuwuYo/MultiLangSwitcher.git
- Open Browser Extensions Management: Enter
chrome://extensions/ / edge://extensions/ in the Chrome browser address bar and press Enter to go to the Extensions management page.
- Enable Developer Mode: Turn on the “Developer mode” switch in the top right corner of the page.
- Load Unpacked Extension: Click the “Load unpacked” button in the top left corner of the page and select the MultiLangSwitcher project folder you downloaded.
- Complete: The extension will be successfully added to the browser, and you can start using it.
Usage
- Open the Extension Popup: Click the MultiLangSwitcher extension icon in the browser toolbar.
- Select Preferred Language: In the popup dropdown menu, select the language you want the browser to simulate.
- Apply Settings: Click the “Apply Changes” button at the bottom of the interface. Your settings will be saved and immediately applied to new network requests.
- Verification and Debugging: Click the “Detection Page” or “Debugging Tools” links provided in the popup to verify if the language settings are effective, or to diagnose issues when they occur.
AI Diagnosis Notes
The detect.html page now includes an AI diagnosis panel. It sends the current structured detection snapshot to an OpenAI-compatible model and turns the raw data into user-friendly explanations.
Current implementation notes:
- Querying an external AI provider sends a structured detection snapshot to that provider. This can include fingerprint-related signals such as language settings, locale and timezone data, partial browser fingerprint fields, and redacted WebRTC or header-derived context. Treat AI diagnosis as third-party data sharing and only use providers you trust.
- AI configuration is stored locally in
chrome.storage.local, grouped by provider
- Replies follow the current detect page language by default
- Exported Markdown only contains visible conversation, excluding the hidden system prompt and hidden initial detection snapshot injection messages
Thanks to Contributors (Welcome to Submit PRs)
License
[](https://app.fossa.com/projects/git%2Bgithub.com%2FChuwuYo%2FMultiLangSwitcher?ref=badge_large)