406 lines
10 KiB
Markdown
406 lines
10 KiB
Markdown
# 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!** 🎯
|