Files
winauth-go/internal/i18n/locales/de.toml
T
iceking2nd c671f2115e feat: Phase 1 WinAuth Go 移植完整实现
将原 C#/.NET WinAuth 移植为 Go + Gio GUI,覆盖 Phase 1 全部功能。

核心模块:
- internal/authenticator: TOTP (Google/Microsoft/Okta) + HOTP + BattleNet + Steam,含
  enroll/sync/code 生成、Steam 交易确认轮询
- internal/config: YAML 配置 + 老版 WinAuth XML 导入(DPAPI + Password + Blowfish/PBKDF2 解密链)
- internal/crypto: 现代加密 (WAGO1) + DPAPI 跨平台封装 + 老版 Blowfish ECB
- internal/win32: 单实例 Mutex 锁 + 全局热键管理器 (RegisterHotKey + PeekMessage 泵) +
  SendInput Unicode 注入 + 剪贴板文本/CF_DIB 图像读写 + AttachThreadInput 焦点切换
- internal/hotkey: "Ctrl+Alt+G" 风格快捷键字符串解析/格式化
- internal/qr: gozxing 二维码解码 + otpauth:// URI 解析
- internal/i18n: en/zh-CN/de 三语 TOML

UI 模块 (Gio):
- 主窗口:圆环倒计时进度条、复制按钮 + Toast 反馈、空列表占位、行分隔线
- 添加流程:vendor 菜单 + 各 vendor 独立对话框 + 二维码扫描入口(文件 / 剪贴板)
- 设置:密码加密、老版 XML 导入、每条目热键配置
- Steam:注册向导(含 captcha/email/SMS 多步)+ 交易确认窗

构建:Windows 主目标,非 Windows 平台所有 Win32 功能走 build-tag 桩实现。
2026-06-12 03:10:37 +08:00

370 lines
8.3 KiB
TOML

# German locale file for winauth-go.
[app_title]
other = "WinAuth"
[menu_file]
other = "Datei"
[menu_help]
other = "Hilfe"
[menu_add_authenticator]
other = "Authentifikator hinzufügen"
[menu_choose_vendor]
other = "Authentifikator-Typ auswählen"
[btn_ok]
other = "OK"
[btn_cancel]
other = "Abbrechen"
[btn_add]
other = "Hinzufügen"
[btn_remove]
other = "Entfernen"
[btn_close]
other = "Schließen"
[btn_enroll]
other = "Registrieren"
[vendor_google]
other = "Google"
[vendor_microsoft]
other = "Microsoft"
[vendor_okta]
other = "Okta Verify"
[vendor_hotp]
other = "HOTP (zählerbasiert)"
[vendor_battlenet]
other = "Battle.Net"
[vendor_steam]
other = "Steam"
[vendor_battlenet_restore]
other = "Battle.Net (mit Wiederherstellungscode wiederherstellen)"
[dialog_add_google_title]
other = "Google Authenticator hinzufügen"
[dialog_add_microsoft_title]
other = "Microsoft Authenticator hinzufügen"
[dialog_add_okta_title]
other = "Okta Verify hinzufügen"
[dialog_add_hotp_title]
other = "HOTP-Authentifikator hinzufügen"
[dialog_add_battlenet_title]
other = "Battle.Net-Authentifikator hinzufügen"
[dialog_add_steam_title]
other = "Steam-Authentifikator hinzufügen"
[label_secret_key]
other = "Geheimschlüssel"
[label_name]
other = "Name"
[label_counter]
other = "Zähler"
[label_serial]
other = "Seriennummer"
[label_device_id]
other = "Geräte-ID"
[label_steam_data]
other = "Steam-Daten (JSON, optional)"
[label_region]
other = "Region"
[label_show_secret]
other = "Geheimnis anzeigen"
[region_auto]
other = "Automatisch erkennen"
[msg_empty_secret]
other = "Bitte einen Geheimschlüssel eingeben."
[msg_invalid_secret]
other = "Der Geheimschlüssel ist kein gültiger Base32-Wert."
[msg_empty_serial]
other = "Bitte die Seriennummer eingeben."
[msg_invalid_counter]
other = "Der Zähler muss eine nicht-negative ganze Zahl sein."
[msg_enrolling]
other = "Verbinde mit dem Server..."
[msg_enroll_failed]
other = "Registrierung fehlgeschlagen: %s"
[menu_settings]
other = "Einstellungen"
[menu_set_password]
other = "Passwort festlegen..."
[menu_about]
other = "Über"
[dialog_password_title]
other = "Passwort eingeben"
[dialog_set_password_title]
other = "Passwort festlegen"
[label_password]
other = "Passwort"
[label_password_confirm]
other = "Passwort bestätigen"
[hint_password_empty_disables]
other = "Beide Felder leer lassen, um die Verschlüsselung zu deaktivieren."
[msg_password_required]
other = "Die Konfiguration ist verschlüsselt. Bitte das Passwort eingeben."
[msg_password_wrong]
other = "Falsches Passwort."
[msg_password_mismatch]
other = "Die beiden Passwörter stimmen nicht überein."
[msg_save_failed]
other = "Speichern der Konfiguration fehlgeschlagen: %s"
[msg_load_failed]
other = "Laden der Konfiguration fehlgeschlagen: %s"
# --- Steam-Registrierungsassistent ---
[steam_step_credentials]
other = "Bitte geben Sie Ihre Steam-Zugangsdaten ein. Das Passwort wird mit Steams öffentlichem RSA-Schlüssel verschlüsselt gesendet und nicht lokal gespeichert."
[steam_step_captcha]
other = "Steam verlangt ein Captcha. Bitte geben Sie die Zeichen aus dem Bild unten ein."
[steam_step_email]
other = "Steam hat einen Bestätigungscode an %s gesendet. Bitte unten eingeben."
[steam_step_activation]
other = "Steam hat einen SMS-Code an Ihr Telefon gesendet. Geben Sie ihn unten ein, um die Registrierung abzuschließen."
[steam_step_done]
other = "Registrierung abgeschlossen. Notieren Sie den Widerrufscode JETZT — ohne ihn können Sie den Authentifikator nicht mehr aus Ihrem Steam-Konto entfernen."
[label_username]
other = "Benutzername"
[label_captcha_text]
other = "Captcha"
[label_email_code]
other = "E-Mail-Code"
[label_activation_code]
other = "Aktivierungscode (SMS)"
[label_revocation_code]
other = "Widerrufscode"
[hint_captcha_loading]
other = "Captcha wird geladen..."
[hint_captcha_failed]
other = "Captcha konnte nicht geladen werden: %s"
[btn_login]
other = "Anmelden"
[btn_continue]
other = "Weiter"
[btn_activate]
other = "Aktivieren"
[btn_finish]
other = "Fertig"
[btn_trades]
other = "Bestätigungen"
[btn_refresh]
other = "Aktualisieren"
[btn_accept]
other = "Annehmen"
[btn_reject]
other = "Ablehnen"
[msg_empty_username]
other = "Bitte einen Benutzernamen eingeben."
[msg_empty_password]
other = "Bitte ein Passwort eingeben."
[msg_empty_captcha]
other = "Bitte den Captcha-Text eingeben."
[msg_empty_email_code]
other = "Bitte den Code aus Ihrer E-Mail eingeben."
[msg_empty_activation_code]
other = "Bitte den Aktivierungscode aus der SMS eingeben."
[msg_busy]
other = "Verarbeitung läuft — bitte warten..."
# --- Steam Bestätigungsfenster ---
[dialog_steam_trades_title]
other = "Steam-Bestätigungen"
[steam_trades_empty]
other = "Keine ausstehenden Bestätigungen."
[steam_trades_loading]
other = "Bestätigungen werden geladen..."
[steam_trades_session_missing]
other = "Dieser Steam-Authentifikator hat keine gespeicherte Login-Sitzung. Bitte fügen Sie ihn erneut über den Registrierungsassistenten hinzu, um Bestätigungen zu verwalten."
[steam_trades_error]
other = "Bestätigungen konnten nicht geladen werden: %s"
# --- Battle.Net Wiederherstellung mit Papier-Code ---
[dialog_restore_battlenet_title]
other = "Battle.Net-Authentifikator wiederherstellen"
[battlenet_restore_intro]
other = "Geben Sie die Seriennummer und den 10-stelligen Wiederherstellungscode ein, den Sie bei der Erstregistrierung notiert haben. Jeder, der beides besitzt, kann den vollen Kontozugriff wiederherstellen — bewahren Sie den Code geheim auf."
[label_restore_code]
other = "Wiederherstellungscode"
[label_show_restore_code]
other = "Wiederherstellungscode anzeigen"
[btn_restore]
other = "Wiederherstellen"
[msg_empty_restore_code]
other = "Bitte den 10-stelligen Wiederherstellungscode eingeben."
[msg_restoring]
other = "Wird von Battle.Net wiederhergestellt..."
[msg_restore_failed]
other = "Wiederherstellung fehlgeschlagen: %s"
# --- Import alter WinAuth-XML-Konfiguration ---
[menu_import_legacy]
other = "Alte WinAuth-XML importieren..."
[dialog_import_legacy_title]
other = "Alte WinAuth-Konfiguration importieren"
[import_legacy_intro]
other = "Wählen Sie die winauth.xml der ursprünglichen WinAuth (gewöhnlich unter %APPDATA%\\WinAuth). DPAPI-verschlüsselte Einträge lassen sich nur auf demselben Windows-Konto/Rechner entschlüsseln, mit dem sie verschlüsselt wurden. Importierte Einträge werden an die aktuelle Liste angehängt."
[label_import_path]
other = "Pfad zur winauth.xml"
[btn_import]
other = "Importieren"
[msg_empty_import_path]
other = "Bitte den Pfad zur winauth.xml angeben."
[msg_legacy_password_required]
other = "Diese Datei enthält passwortverschlüsselte Einträge — bitte das ursprüngliche WinAuth-Passwort eingeben."
[msg_legacy_password_wrong]
other = "Falsches Passwort für die alte WinAuth-Datei."
[msg_import_failed]
other = "Import fehlgeschlagen: %s"
# --- Hotkey-Konfiguration ---
[btn_hotkey]
other = "Hotkey..."
[btn_clear_hotkey]
other = "Hotkey löschen"
[dialog_hotkey_title]
other = "Hotkey bearbeiten"
[label_hotkey]
other = "Hotkey"
[hotkey_intro]
other = "Geben Sie eine globale Tastenkombination für diesen Eintrag ein, z. B. \"Strg+Alt+G\". Es ist mindestens ein Modifikator (Strg, Alt, Umschalt oder Win) erforderlich. Beim Drücken der Kombination wird das OTP in die Zwischenablage kopiert und in das Vordergrundfenster eingegeben."
# --- Sonstige UX ---
[btn_copy]
other = "Kopieren"
[msg_copied]
other = "Code in die Zwischenablage kopiert"
[msg_copy_failed]
other = "Kopieren in die Zwischenablage fehlgeschlagen"
[msg_empty_list]
other = "Noch keine Authentifikatoren. Klicken Sie auf \"Hinzufügen\", um einen zu registrieren."
# --- QR-Code Scan ---
[vendor_scan_qr]
other = "QR-Code scannen (otpauth://)"
[dialog_scan_qr_title]
other = "otpauth QR-Code scannen"
[qr_intro]
other = "Geben Sie den Pfad zu einer PNG/JPG-Datei mit dem QR-Code ein und klicken Sie auf \"Aus Datei\". Oder kopieren Sie das QR-Bild in die Zwischenablage (Win+Umschalt+S funktioniert) und klicken Sie auf \"Aus Zwischenablage\"."
[label_qr_path]
other = "Pfad zur Bilddatei"
[btn_qr_from_file]
other = "Aus Datei"
[btn_qr_from_clipboard]
other = "Aus Zwischenablage"
[msg_empty_qr_path]
other = "Bitte den Pfad zu einer Bilddatei eingeben oder \"Aus Zwischenablage\" verwenden."
[msg_qr_failed]
other = "QR-Scan fehlgeschlagen: %s"
[msg_clipboard_no_image]
other = "Zwischenablage enthält kein Bild"