Internationalisierungsmodul¶
i18n
¶
Internationalization (i18n) support for Weeb CLI.
This module provides multi-language support through JSON-based translation files. Supports Turkish (tr), English (en), German (de), and Polish (pl).
The translation system uses dot-notation for nested keys and supports string interpolation with keyword arguments.
Example
Basic usage::
from weeb_cli.i18n import i18n
# Get translated string
message = i18n.t("menu.search", "Search Anime")
# With interpolation
greeting = i18n.t("welcome.user", name="John")
# Change language
i18n.set_language("tr")
Attributes:
| Name | Type | Description |
|---|---|---|
LOCALES_DIR |
Path
|
Directory containing translation JSON files. |
i18n |
I18n
|
Global i18n instance for application-wide use. |
I18n
¶
Internationalization manager for multi-language support.
Loads and manages translation strings from JSON files, providing a simple interface for retrieving localized text with support for nested keys and string interpolation.
Attributes:
| Name | Type | Description |
|---|---|---|
language |
str
|
Current language code (e.g., 'en', 'tr', 'de', 'pl'). |
translations |
Dict[str, Any]
|
Loaded translation dictionary. |
Source code in weeb_cli/i18n.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | |
__init__
¶
Initialize i18n with language from config or default to English.
Source code in weeb_cli/i18n.py
set_language
¶
Set the active language and reload translations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
language_code
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Source code in weeb_cli/i18n.py
load_translations
¶
Load translation file for the current language.
Falls back to English if the requested language file doesn't exist. Silently handles file read errors by using an empty dictionary.
Source code in weeb_cli/i18n.py
get
¶
Get translated string by dot-notation key path.
Supports nested keys using dot notation (e.g., 'menu.search.title') and string interpolation using keyword arguments.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_path
|
str
|
Dot-separated path to translation key (e.g., 'menu.search'). |
required |
default
|
Optional[str]
|
Default value if key not found. If None, returns key_path. |
None
|
**kwargs
|
Any
|
Variables for string interpolation using .format(). |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
Translated and interpolated string, or default/key_path if not found. |
Example
i18n.get("welcome.message", name="John") "Welcome, John!" i18n.get("missing.key", "Default Text") "Default Text"
Source code in weeb_cli/i18n.py
get_locales_dir
¶
Get the locales directory path.
Handles both development and frozen (PyInstaller) environments.
Returns:
| Type | Description |
|---|---|
Path
|
Path to the locales directory containing translation files. |
Source code in weeb_cli/i18n.py
Übersicht¶
Das i18n-Modul bietet mehrsprachige Unterstützung durch JSON-basierte Übersetzungsdateien. Unterstützt Türkisch (tr), Englisch (en), Deutsch (de) und Polnisch (pl).
Verwendungsbeispiele¶
Basis-Übersetzung¶
from weeb_cli.i18n import i18n
# Übersetzten String abrufen
message = i18n.t("menu.search", "Anime suchen")
error = i18n.t("errors.network", "Netzwerkfehler")
String-Interpolation¶
from weeb_cli.i18n import i18n
# Mit benannten Parametern
greeting = i18n.t("welcome.user", name="Max")
# Ergebnis: "Willkommen, Max!"
progress = i18n.t("download.progress",
current=5,
total=12,
percent=42)
# Ergebnis: "Herunterladen 5/12 (42%)"
Sprache ändern¶
from weeb_cli.i18n import i18n
# Zu Türkisch wechseln
i18n.set_language("tr")
# Zu Deutsch wechseln
i18n.set_language("de")
Verschachtelte Schlüssel¶
Übersetzungsdateien verwenden verschachtelte JSON-Struktur:
{
"menu": {
"search": "Anime suchen",
"downloads": "Downloads",
"settings": "Einstellungen"
},
"errors": {
"network": "Netzwerkverbindung fehlgeschlagen",
"not_found": "Anime nicht gefunden"
}
}
Zugriff mit Punkt-Notation:
i18n.t("menu.search") # "Anime suchen"
i18n.t("errors.network") # "Netzwerkverbindung fehlgeschlagen"
Unterstützte Sprachen¶
| Code | Sprache | Status |
|---|---|---|
en |
Englisch | ✅ Vollständig |
tr |
Türkisch | ✅ Vollständig |
de |
Deutsch | ✅ Vollständig |
pl |
Polnisch | ✅ Vollständig |
Übersetzungsdateien¶
Übersetzungsdateien befinden sich in weeb_cli/locales/:
Übersetzungen hinzufügen¶
Um eine neue Sprache hinzuzufügen:
weeb_cli/locales/<sprach_code>.jsonerstellen- Struktur von
en.jsonkopieren - Alle Strings übersetzen
- Mit
i18n.set_language("<sprach_code>")testen
Fallback-Verhalten¶
- Wenn ein Schlüssel nicht gefunden wird, wird der Standardwert oder Schlüsselpfad zurückgegeben
- Wenn eine Übersetzungsdatei nicht existiert, wird auf Englisch zurückgegriffen
- Wenn die englische Datei fehlt, werden leere Übersetzungen zurückgegeben
API-Referenz¶
Internationalization manager for multi-language support.
Loads and manages translation strings from JSON files, providing a simple interface for retrieving localized text with support for nested keys and string interpolation.
Attributes:
| Name | Type | Description |
|---|---|---|
language |
str
|
Current language code (e.g., 'en', 'tr', 'de', 'pl'). |
translations |
Dict[str, Any]
|
Loaded translation dictionary. |
Source code in weeb_cli/i18n.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | |
get
¶
Get translated string by dot-notation key path.
Supports nested keys using dot notation (e.g., 'menu.search.title') and string interpolation using keyword arguments.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_path
|
str
|
Dot-separated path to translation key (e.g., 'menu.search'). |
required |
default
|
Optional[str]
|
Default value if key not found. If None, returns key_path. |
None
|
**kwargs
|
Any
|
Variables for string interpolation using .format(). |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
Translated and interpolated string, or default/key_path if not found. |
Example
i18n.get("welcome.message", name="John") "Welcome, John!" i18n.get("missing.key", "Default Text") "Default Text"
Source code in weeb_cli/i18n.py
set_language
¶
Set the active language and reload translations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
language_code
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Source code in weeb_cli/i18n.py
load_translations
¶
Load translation file for the current language.
Falls back to English if the requested language file doesn't exist. Silently handles file read errors by using an empty dictionary.