Sniffnet Internationalization Languages: Complete Guide to All 23 Supported Locales
TLDR: Sniffnet supports 23 internationalization languages defined in the Language enum in src/translations/types/language.rs, accessible through the Language::ALL constant which provides an ordered list of all locale variants including English, Italian, French, Simplified Chinese, and others.
Sniffnet is an open-source network monitoring tool built in Rust that provides comprehensive traffic analysis capabilities. Its robust internationalization system supports 23 languages, allowing users worldwide to interact with the application in their native tongue. The complete list of Sniffnet internationalization languages is centrally defined in src/translations/types/language.rs through a strongly-typed enum architecture.
Complete List of Sniffnet Internationalization Languages
The Language enum in src/translations/types/language.rs enumerates 23 distinct locale variants. Each variant maps to a human-readable name, a country flag icon, and translation bundle status metadata.
The supported languages are:
EN— English (GB flag)IT— Italiano (IT flag)FR— Français (FR flag)ES— Español (ES flag)PL— Polski (PL flag)DE— Deutsch (DE flag)UK— Українська (UA flag)ZH— 简体中文 (CN flag for Simplified Chinese)ZH_TW— 繁體中文 (TW flag for Traditional Chinese)RO— Română (RO flag)KO— 한국어 (KR flag)PT— Português (PT flag)TR— Türkçe (TR flag)RU— Русский (RU flag)EL— Ελληνικά (GR flag)SV— Svenska (SE flag)FI— Suomi (FI flag)JA— 日本語 (JP flag)UZ— Oʻzbekcha (UZ flag)VI— Tiếng Việt (VN flag)ID— Bahasa Indonesia (ID flag)NL— Nederlands (NL flag)CS— Čeština (CZ flag)
These variants are collected in the Language::ALL constant, which the UI iterates over when presenting the language selector in the settings page.
How the Internationalization System Works
Sniffnet's i18n architecture centers on the Language enum defined in src/translations/types/language.rs. This file contains the source of truth for all localization data, including display formatting, flag mappings, and translation status tracking.
Core Data Structure
The Language enum declares each supported locale as a variant. The constant Language::ALL provides an array containing all 23 variants in the order they appear in the language selector UI. When the application initializes the settings page in src/gui/pages/settings_general_page.rs, it iterates over Language::ALL to populate the dropdown menu available to users.
Flag Icons and Visual Indicators
Each language variant maps to a specific country flag through the get_flag() method. This implementation in src/translations/types/language.rs returns SVG data defined in src/countries/flags_pictures.rs. For example, the ZH variant displays the CN (China) flag for Simplified Chinese, while ZH_TW uses the TW (Taiwan) flag for Traditional Chinese.
Translation Status Checking
Not all language packs receive updates simultaneously. The is_up_to_date() method on the Language enum reports whether a specific locale's translation bundle is current. The application uses this metadata to indicate to users when a translation may be incomplete or outdated.
Accessing Language Data Programmatically
Developers extending Sniffnet can interact with the internationalization system directly through the public API exposed in src/translations/mod.rs.
The following example demonstrates iterating over supported languages and checking their properties:
use sniffnet::translations::types::language::Language;
fn list_available_languages() {
for lang in Language::ALL.iter() {
println!("{}", lang);
if !lang.is_up_to_date() {
println!(" Warning: Translation needs update");
}
}
}
To retrieve the appropriate flag icon for UI rendering:
fn render_language_flag(lang: Language) -> iced::widget::Svg<'static, sniffnet::StyleType> {
lang.get_flag()
}
The Display implementation for Language formats debug output as Variant - Human-readable name, making logging straightforward across all 23 supported locales.
Summary
- Sniffnet supports 23 internationalization languages defined in
src/translations/types/language.rs - The
Language::ALLconstant provides an ordered array of all locale variants for UI iteration - Each language includes metadata for human-readable names, flag icons (via
get_flag()), and update status (viais_up_to_date()) - The settings UI in
src/gui/pages/settings_general_page.rsuses this data structure to render the language selector - Flag SVG data resides in
src/countries/flags_pictures.rsand is mapped through the translation types module
Frequently Asked Questions
How many languages does Sniffnet support?
Sniffnet currently supports 23 languages through its internationalization system. The complete list includes major world languages such as English, Spanish, French, German, Simplified and Traditional Chinese, Japanese, Korean, and others, as defined in the Language enum in src/translations/types/language.rs.
How do I change the interface language in Sniffnet?
The language selector is located in the general settings page. The UI iterates over the Language::ALL constant defined in src/translations/types/language.rs to display available options in src/gui/pages/settings_general_page.rs. Select your preferred language from the dropdown menu to apply the localization immediately.
Why does some text appear in English even when another language is selected?
This occurs when a translation bundle is not fully current. The is_up_to_date() method on the Language enum identifies which locales have complete translations. Languages marked as not up-to-date may display English text as a fallback for untranslated strings.
How are the flag icons associated with each language?
Each Language variant implements the get_flag() method which returns an SVG icon. The mapping connects language codes to specific country flags (for example, EN maps to the GB flag, ZH to CN, and ZH_TW to TW). The actual SVG data is stored in src/countries/flags_pictures.rs and rendered through the Iced UI framework.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →