Files
mailadler/PRAKTISCHE_FEATURES.md
2026-02-04 02:47:35 +01:00

406 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Mail-Adler Praktische Features
## 1. Google Translate für Englisch → Andere Sprachen
### Workflow:
```
1. Englisch Strings exportieren
python3 export_to_csv.py → glossary_en.csv
2. In Excel: Englisch-Spalte kopieren
A1:A250 (alle English Strings)
3. Google Translate öffnen
https://translate.google.com
- Links: English Paste
- Rechts: Wähle Zielsprache
- Auto-Übersetzung
4. Ergebnis → Excel
Gespiegelt in neue Spalte
5. CSV zurück → .ts
python3 import_csv_to_ts.py
```
### Zeit sparen:
```
Deutsch → Englisch: Manuell sorgfältig (10 Min)
Englisch → Rest: Google Translate Auto (30 Sekunden pro Sprache)
Statt 30 Sprachen × 45 Min = 22.5 Std
Nur 30 Sprachen × 30 Sec = 15 Minuten!
```
**Das ist VIEL schneller!**
---
## 2. Auto-Übersetzung für Email-Inhalte
### Feature für Phase C:
Wenn Email in anderer Sprache kommt → automatisch in deine Sprache übersetzen
```cpp
// src/translation/EmailTranslator.h/cpp
class EmailTranslator {
public:
// Erkenne Sprache
QString detectLanguage(const QString &emailBody);
// Übersetze
QString translateToUserLanguage(
const QString &emailBody,
const QString &detectedLanguage
);
// Nutze lokale LLM (Ollama)
// Nicht Google (wegen Datenschutz!)
};
```
### Verwendung:
```cpp
// In MailViewWidget:
QString emailBody = "Bonjour, comment allez-vous?";
EmailTranslator translator;
QString detectedLang = translator.detectLanguage(emailBody);
// → "French"
if (detectedLang != userLanguage) {
QString translated = translator.translateToUserLanguage(
emailBody,
detectedLang
);
// Zeige Übersetzung
ui->emailContent->setText(translated);
// Zeige auch Original (kleiner)
ui->originalContent->setText(emailBody);
}
```
### Optionen:
| Quelle | Datenschutz | Qualität | Geschwindigkeit |
|--------|-------------|----------|-----------------|
| **Google Translate API** | ❌ Schlecht | ✅✅ Sehr gut | ⚡ Schnell |
| **DeepL API** | ⚠️ EU | ✅✅ Sehr gut | ⚡ Schnell |
| **Ollama lokal** | ✅✅ Perfekt | ✅ Gut | ⚡⚡ Mittel |
| **LibreTranslate OSS** | ✅✅ Perfekt | ✅ Gut | ⚡⚡ Mittel |
**EMPFEHLUNG für Mail-Adler: Ollama lokal** (dezentralisiert!)
```python
# src/translation/ollama_translator.py
import requests
class OllamaEmailTranslator:
def __init__(self, base_url="http://localhost:11434"):
self.base_url = base_url
def translate_email(self, text: str, target_lang: str) -> str:
"""Übersetze Email-Text mit lokalem Ollama"""
prompt = f"""Übersetze folgende Email ins {target_lang}.
Halte Formatierung und Umlaute.
Antworte nur mit Übersetzung, keine Erklärung.
Text: {text}
Übersetzung:"""
response = requests.post(
f"{self.base_url}/api/generate",
json={
"model": "mistral:7b",
"prompt": prompt,
"stream": False,
}
)
return response.json()["response"].strip()
```
---
## 3. Copy-Paste überall (Universell)
### Qt macht das automatisch:
```cpp
// In jedem QTextEdit/QLineEdit:
// Ctrl+C/Ctrl+V funktionieren IMMER
// Rechts-Klick → Copy/Paste funktioniert IMMER
// In QTableWidget/QTreeWidget:
// Auch Copy-Paste möglich (Zellen-Inhalte)
// Eigene Implementierung für Custom:
class CustomText : public QWidget {
Q_OBJECT
private:
void keyPressEvent(QKeyEvent *event) override {
if (event->key() == Qt::Key_C && event->modifiers() == Qt::ControlModifier) {
QApplication::clipboard()->setText(selectedText());
}
if (event->key() == Qt::Key_V && event->modifiers() == Qt::ControlModifier) {
pasteFromClipboard();
}
}
};
```
### In Mail-Adler:
- ✅ Email-Text: Copy-Paste überall
- ✅ Email-Header: Copy-Paste Absender, Betreff, etc.
- ✅ Anhang-Namen: Copy-Paste
- ✅ Links: Copy-Paste
- ✅ Metadaten: Alle markierbar & kopierbar
**Standard in Qt - keine spezielle Implementierung nötig!**
---
## 4. Tastatur-Shortcuts
### Mail-Adler Standard-Shortcuts
```
NAVIGATION:
├─ Tab → Nächste Email / Feld
├─ Shift+Tab → Vorherige Email / Feld
├─ Arrow Up/Down → Navigation in Ordner/Liste
├─ Ctrl+Home → Erste Email
├─ Ctrl+End → Letzte Email
├─ Page Up/Down → Seitenweise scrollen
└─ Escape → Zurück zur Ordnerliste
LESEN:
├─ Space → Page Down (Email lesen)
├─ Shift+Space → Page Up
├─ Ctrl+F → Im Text suchen
├─ Ctrl+P → Email drucken
└─ Ctrl+Shift+V → Plaintext-Modus
SCHREIBEN:
├─ Ctrl+N → Neue Email
├─ Ctrl+Shift+D → Aus Entwürfen fortfahren
├─ Tab → Nächstes Feld (An → Cc → Betreff → Text)
├─ Ctrl+Enter → Senden
└─ Ctrl+Shift+S → Als Entwurf speichern
ORDNER:
├─ Ctrl+1 → Eingang
├─ Ctrl+2 → Gesendet
├─ Ctrl+3 → Entwürfe
├─ Ctrl+4 → Spam
├─ Ctrl+5 → Archiv
├─ Ctrl+6 → Custom Ordner
├─ Ctrl+Shift+N → Neuer Ordner
└─ Delete → Ordner löschen
AKTIONEN:
├─ Ctrl+R → Antworten
├─ Ctrl+Shift+R → Allen antworten
├─ Ctrl+Shift+F → Weiterleiten
├─ Ctrl+M → Als gelesen markieren
├─ Ctrl+* → Als Markiert (*) togglen
├─ Delete → Löschen → Papierkorb
├─ Ctrl+Delete → Permanent löschen
├─ Ctrl+S → Speichern / Synchronisieren
└─ F5 → Aktualisieren / Neu laden
ALLGEMEIN:
├─ Ctrl+Q → Beenden
├─ Ctrl+, → Einstellungen
├─ F1 → Hilfe
├─ Ctrl+H → Verlauf
├─ Ctrl+L → Adressleiste aktivieren
└─ Alt+Numbers → Menu nutzen
```
### Implementierung in Qt:
```cpp
// src/ui/MainWindow.cpp
void MainWindow::setupKeyboardShortcuts() {
// Neue Email
new QShortcut(Qt::CTRL + Qt::Key_N, this, SLOT(on_actionNew_triggered()));
// Antworten
new QShortcut(Qt::CTRL + Qt::Key_R, this, SLOT(on_actionReply_triggered()));
// Senden (in Compose)
new QShortcut(Qt::CTRL + Qt::Key_Return, this, SLOT(on_actionSend_triggered()));
// Navigation
new QShortcut(Qt::CTRL + Qt::Key_1, this, [this]() {
switchToFolder("Eingang");
});
new QShortcut(Qt::CTRL + Qt::Key_2, this, [this]() {
switchToFolder("Gesendet");
});
// Löschen
new QShortcut(Qt::Key_Delete, this, SLOT(on_actionDelete_triggered()));
// Spam
new QShortcut(Qt::CTRL + Qt::Key_Exlamation, this, SLOT(on_actionSpam_triggered()));
}
```
### Vim-Style Shortcuts (Optional für Phase D):
```cpp
// Für Power-User:
// :q → Beenden
// j/k → Down/Up
// d → Löschen
// a → Antworten
// r → Antworten
// w → Weiterleiten
// etc.
// Konfigurierbar in Einstellungen:
// [] Enable Vim Keybindings
```
---
## 5. Kombination: Englisch → Google Translate → Rest
### Praktischer Workflow (für dich):
```
Tag 1: ENGLISCH (Manuell - sorgfältig)
═══════════════════════════════════
python3 export_to_csv.py \
--source translations/mail-adler_de.ts \
--output glossary_all.csv \
--languages "English"
→ Glossary mit Deutsch + leerer English-Spalte
→ LM Studio: 70 Wörter eingeben
Abbrechen = Cancel
Anmeldedaten = Credentials
... (30 Min)
→ Speichern
Day 2: GOOGLE TRANSLATE (Auto)
═══════════════════════════════════
1. Englisch-Spalte aus Excel kopieren (A1:A70)
2. Google Translate öffnen
3. Paste → Rechts: "Französisch" wählen
4. Auto-Übersetzung
5. Kopieren → Excel
→ Repeat für: Español, Português, Italiano, Niederländisch, Polnisch, ...
(Pro Sprache: 2-3 Minuten)
Day 3: IMPORT & RELEASE
═══════════════════════
./batch_import_parallel.sh
→ 20-30 Sekunden
git push
→ GitHub Actions
→ Release
TOTAL: 2.5 Tage für 30 Sprachen statt 22 Tage!
```
### So sieht Excel aus:
```csv
Deutsch,English,Français,Español,Português,Italiano,Niederländisch,Polnisch,...
Abbrechen,Cancel,Annuler,Cancelar,Cancelar,Annulla,Annuleren,Anuluj,...
Anmeldedaten,Credentials,Identifiants,Credenciales,Credenciais,Credenziali,Inloggegevens,Poświadczenia,...
...
```
**Englisch = Manuell sorgfältig**
**Alles andere = Google Translate Auto**
---
## 6. Zusammenfassung: Praktische Mail-Adler Features
| Feature | Status | Nutzen |
|---------|--------|--------|
| **Auto-Translate Email-Inhalt** | Phase C | 🌍 User liest Emails in beliebiger Sprache |
| **Copy-Paste überall** | Phase B | ✅ Standard Qt |
| **Tastatur-Shortcuts** | Phase B | ⚡ Schnelles Arbeiten |
| **Englisch manuell** | Phase B | 👤 Sorgfaltig |
| **Englisch→Andere via Google** | Phase B | 🚀 Super schnell |
| **Vim-Keybindings** | Phase D | 🎮 Optional für Power-User |
---
## 7. Copy-Paste Implementierung (überall)
```cpp
// src/util/ClipboardHelper.h
class ClipboardHelper {
public:
static QString getText() {
return QApplication::clipboard()->text();
}
static void setText(const QString &text) {
QApplication::clipboard()->setText(text);
}
static void copySelection(QAbstractItemView *view) {
// Kopiere ausgewählte Zeilen/Zellen
QModelIndexList indexes = view->selectionModel()->selectedIndexes();
QString text;
for (const auto &index : indexes) {
text += index.data().toString() + "\t";
}
setText(text);
}
};
// Nutzung überall:
// Rechts-Klick im Email-Text → Copy
// Rechts-Klick in Ordnerliste → Copy Ordnernamen
// etc. - alles Standard Qt!
```
---
## 8. Google Translate vs. Ollama für Email-Inhalt (Phase C)
```
Nutzer erhält Emails in verschiedenen Sprachen:
Option A: Google Translate (Phase C - später)
├─ Schnell ⚡
├─ Qualität sehr gut ✅✅
└─ Datenschutz ❌ (Daten zu Google)
Option B: Ollama lokal
├─ Schnell ⚡⚡ (lokal)
├─ Qualität gut ✅
└─ Datenschutz ✅✅ (alles lokal)
EMPFEHLUNG: Ollama (dezentralisiert!)
```
---
## Fazit:
**Google Translate für deine Übersetzungsarbeit** (Englisch → Andere)
**Ollama für User-Feature** (Email-Inhalt Auto-Übersetzen)
**Copy-Paste überall** (Standard in Qt)
**Tastatur-Shortcuts** (Schneller arbeiten)
**Alles machbar und praktisch!** 🎯