feat(i18n): localizzazione interfaccia — italiano, francese, tedesco (v0.4.0)

- translations/: harbour-hermes-it/fr/de.ts (78 stringhe ciascuna, 100%
  tradotte) + caricamento in main.cpp in base alla lingua di sistema
- .pro: CONFIG += sailfishapp_i18n + TRANSLATIONS (pattern ufficiale
  Sailfish: .qm generati in build e installati in
  /usr/share/harbour-hermes/translations)
- stringhe visibili del core in tr(): ApiClient, ChatModel, Recorder
  (VoiceRecorder era gia' ok); plurali dei messaggi corretti
  (1 message / %1 messages) in SessionsPage e CoverPage
- spec: BuildRequires qt5-qttools-linguist + %files translations
- README/BUILD: sezione Localization + workflow lupdate/lrelease

Verificato: lupdate 78/78 per it/fr/de, lrelease OK, e test runtime di
caricamento .qm (tutte le traduzioni risolte nei contesti corretti).
This commit is contained in:
2026-09-12 22:37:32 +02:00
parent 48467b372d
commit 22ccb49424
13 changed files with 1357 additions and 17 deletions
+21 -3
View File
@@ -14,6 +14,8 @@ chat with your Hermes agent from the phone — and use it with your **voice**.
QMediaPlayer; optional auto-read of every completed reply
- **Voice dialog (hands-free)**: continuous listen → transcribe → send →
read-aloud loop, auto-stopping on speech pauses (tunable)
- **Localized UI**: English (source), Italian, French and German — follows
the system language
- Cancel a running turn, resync from server state, cover page
## Requirements
@@ -47,6 +49,22 @@ requires a server address.
> pick another one, leave the voice empty (server default), or add your
> language's voices to your own `hermes-webui`.
## Localization
The UI follows the system language: English is the source language, and
Italian, French and German translations live in `translations/*.ts`. At build
time (`sailfishapp_i18n`) the `.qm` files are generated and installed to
`/usr/share/harbour-hermes/translations`, where the app loads them on startup.
After changing UI strings:
```bash
lupdate -no-obsolete -recursive src qml \
-ts translations/harbour-hermes-it.ts \
translations/harbour-hermes-fr.ts \
translations/harbour-hermes-de.ts
# then edit the .ts files and rebuild
```
## Build
See [docs/BUILD.md](docs/BUILD.md) (Sailfish SDK, `sfdk build` / `sfdk deploy`)
@@ -55,6 +73,6 @@ speaks (validated live against a real instance).
## Status
Version 0.3.2 — protocol and C++ core validated against a real `hermes-webui`
(login, sessions, streaming chat, TTS, STT, voice dialog); on-device testing
still ongoing.
Version 0.4.0 — protocol and C++ core validated against a real `hermes-webui`
(login, sessions, streaming chat, TTS, STT, voice dialog); UI in English,
Italian, French and German; on-device testing still ongoing.
+16 -3
View File
@@ -76,14 +76,27 @@ richiede il probe WebUI su :8899). Esito 12/09/2026: unit 9/9, live completo OK.
```bash
cd ~/workspace
tar czf harbour-hermes-0.3.2.tar.gz \
--transform 's,^harbour-hermes,harbour-hermes-0.3.2,' \
tar czf harbour-hermes-0.4.0.tar.gz \
--transform 's,^harbour-hermes,harbour-hermes-0.4.0,' \
--exclude='.git' harbour-hermes
```
Lo spec si aspetta la directory `harbour-hermes-0.3.2/` (pattern degli altri
Lo spec si aspetta la directory `harbour-hermes-0.4.0/` (pattern degli altri
progetti: cercato in modo robusto anche per i sorgenti live di sfdk).
## Traduzioni
Stringhe UI in `qsTr()` (QML) e `tr()` (C++). Dopo modifiche alle stringhe:
```bash
lupdate -no-obsolete -recursive src qml -ts translations/harbour-hermes-it.ts \
translations/harbour-hermes-fr.ts translations/harbour-hermes-de.ts
```
In build `CONFIG += sailfishapp_i18n` compila i `.qm` e li installa in
`/usr/share/harbour-hermes/translations` (caricati all'avvio in base alla
lingua di sistema).
## 5. Dipendenze lato server (WebUI)
- `/api/transcribe` richiede un provider STT attivo sul server
+13
View File
@@ -49,3 +49,16 @@ icons128.files = $$PWD/icons/128x128/harbour-hermes.png
icons172.path = /usr/share/icons/hicolor/172x172/apps
icons172.files = $$PWD/icons/172x172/harbour-hermes.png
INSTALLS += icons86 icons108 icons128 icons172
# Traduzioni: l'inglese e' la lingua sorgente; it/fr/de tradotte.
# Con sailfishapp_i18n i .qm vengono generati in build e installati in
# /usr/share/harbour-hermes/translations, dove l'app li carica all'avvio
# in base alla lingua di sistema (pattern ufficiale Sailfish).
CONFIG += sailfishapp_i18n
TRANSLATIONS += \
translations/harbour-hermes-it.ts \
translations/harbour-hermes-fr.ts \
translations/harbour-hermes-de.ts
OTHER_FILES += translations/*.ts
+1 -1
View File
@@ -14,7 +14,7 @@ CoverBackground {
Label {
anchors.centerIn: parent
text: chat.count + qsTr(" messages")
text: chat.count === 1 ? qsTr("1 message") : qsTr("%1 messages").arg(chat.count)
color: Theme.primaryColor
}
+1 -1
View File
@@ -122,6 +122,6 @@ Page {
function describe(n, u) {
var c = n ? n : 0
var d = new Date((u ? u : 0) * 1000)
return c + qsTr(" messages") + " · " + Qt.formatDateTime(d, "dd/MM HH:mm")
return (c === 1 ? qsTr("1 message") : qsTr("%1 messages").arg(c)) + " · " + Qt.formatDateTime(d, "dd/MM HH:mm")
}
}
+9 -1
View File
@@ -1,6 +1,6 @@
Name: harbour-hermes
Summary: Client for the Hermes Web UI with voice
Version: 0.3.2
Version: 0.4.0
Release: 1
Group: Qt/Qt
License: MIT
@@ -16,6 +16,7 @@ BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5Multimedia)
BuildRequires: desktop-file-utils
BuildRequires: qt5-qttools-linguist
%description
Native Sailfish OS client for the Hermes Web UI (hermes-webui).
@@ -24,6 +25,12 @@ Sessions list, chat with live streaming replies, voice dictation
(server-side TTS), plus a hands-free conversation mode.
%changelog
* Sat Sep 12 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.0-1
- Localizzazione dell'interfaccia: italiano, inglese (sorgente),
francese e tedesco (78 stringhe per lingua); .qm generati con
sailfishapp_i18n e installati in /usr/share/harbour-hermes/translations,
caricati in base alla lingua di sistema; stringhe C++ in tr();
plurali dei messaggi corretti
* Sat Sep 12 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.3.2-1
- README: nota sui limiti delle voci TTS (allowlist del server; 400
invalid voice) e su come gestirli (voce vuota = default del server)
@@ -93,3 +100,4 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || tr
%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
%{_datadir}/icons/hicolor/172x172/apps/%{name}.png
%{_datadir}/%{name}/qml
%{_datadir}/%{name}/translations
+3 -3
View File
@@ -65,9 +65,9 @@ QString ApiClient::errorFromReply(QNetworkReply *reply, const QByteArray &body)
}
const int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (status == 401)
return QStringLiteral("Authentication required");
return tr("Authentication required");
if (status > 0)
return QStringLiteral("HTTP %1").arg(status);
return tr("HTTP %1").arg(status);
return reply->errorString();
}
@@ -152,7 +152,7 @@ void ApiClient::checkAuth()
void ApiClient::login(const QString &password)
{
if (m_settings->baseUrl().isEmpty()) {
setLastError(QStringLiteral("Server address not configured"));
setLastError(tr("Server address not configured"));
return;
}
setLastError(QString());
+2 -2
View File
@@ -88,12 +88,12 @@ void ChatModel::send(const QString &text)
// "non fare nulla" senza che si capisse il perché.
if (m_sessionId.isEmpty()) {
qDebug() << "[chat] send rifiutato: nessuna sessione aperta";
emit notice(QStringLiteral("No session open"));
emit notice(tr("No session open"));
return;
}
if (m_busy) {
qDebug() << "[chat] send rifiutato: un turno e' gia' in corso";
emit notice(QStringLiteral("Wait for the current reply"));
emit notice(tr("Wait for the current reply"));
return;
}
qDebug() << "[chat] invio:" << trimmed.size() << "caratteri";
+12 -2
View File
@@ -1,7 +1,9 @@
#include <QGuiApplication>
#include <QLocale>
#include <QQmlContext>
#include <QQuickView>
#include <QDebug>
#include <QTranslator>
#include <sailfishapp.h>
#include "apiclient.h"
@@ -19,9 +21,17 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
// AppConfigLocation = ~/.config/harbour/hermes (zona persistente della sandbox).
app->setOrganizationName(QStringLiteral("harbour"));
app->setApplicationName(QStringLiteral("hermes"));
app->setApplicationVersion(QStringLiteral("0.3.2"));
app->setApplicationVersion(QStringLiteral("0.4.0"));
qDebug() << "harbour-hermes v0.3.2 build" << __DATE__ << __TIME__;
qDebug() << "harbour-hermes v0.4.0 build" << __DATE__ << __TIME__;
// Traduzioni: it/fr/de da /usr/share/harbour-hermes/translations, in base
// alla lingua di sistema (l'inglese e' la lingua sorgente: nessun .qm).
QTranslator translator;
if (translator.load(QLocale(), QStringLiteral("harbour-hermes"),
QStringLiteral("-"),
QStringLiteral("/usr/share/harbour-hermes/translations")))
app->installTranslator(&translator);
Settings settings;
ApiClient api(&settings);
+1 -1
View File
@@ -69,7 +69,7 @@ bool Recorder::start()
const QString container = chooseContainer(m_rec->supportedContainers());
const QString codec = chooseCodec(m_rec->supportedAudioCodecs());
if (container.isEmpty() || codec.isEmpty()) {
emit failed(QStringLiteral("No audio format available"));
emit failed(tr("No audio format available"));
return false;
}
m_fallbackTried = false;
+426
View File
@@ -0,0 +1,426 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de_DE">
<context>
<name>ApiClient</name>
<message>
<location filename="../src/apiclient.cpp" line="68" />
<source>Authentication required</source>
<translation>Authentifizierung erforderlich</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="70" />
<source>HTTP %1</source>
<translation>HTTP %1</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="155" />
<source>Server address not configured</source>
<translation>Serveradresse nicht konfiguriert</translation>
</message>
</context>
<context>
<name>ChatModel</name>
<message>
<location filename="../src/chatmodel.cpp" line="91" />
<source>No session open</source>
<translation>Keine Sitzung geöffnet</translation>
</message>
<message>
<location filename="../src/chatmodel.cpp" line="96" />
<source>Wait for the current reply</source>
<translation>Warte auf die laufende Antwort</translation>
</message>
</context>
<context>
<name>ChatPage</name>
<message>
<location filename="../qml/pages/ChatPage.qml" line="41" />
<source>Chat</source>
<translation>Chat</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="50" />
<location filename="../qml/pages/ChatPage.qml" line="380" />
<source>Hermes is writing…</source>
<translation>Hermes schreibt…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="51" />
<location filename="../qml/pages/ChatPage.qml" line="382" />
<source>Speaking…</source>
<translation>Wiedergabe…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: on</source>
<translation>Sprachmodus: an</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: off</source>
<translation>Sprachmodus: aus</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="62" />
<source>Read last reply aloud</source>
<translation>Letzte Antwort vorlesen</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: on</source>
<translation>Auto-Vorlesen: an</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: off</source>
<translation>Auto-Vorlesen: aus</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="70" />
<source>Stop playback</source>
<translation>Wiedergabe stoppen</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="75" />
<source>Cancel run</source>
<translation>Antwort abbrechen</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="80" />
<source>Resync</source>
<translation>Neu synchronisieren</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="143" />
<source>Recording… %1 — tap Stop to transcribe</source>
<translation>Aufnahme… %1 — tippe auf Stop zum Transkribieren</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="144" />
<location filename="../qml/pages/ChatPage.qml" line="376" />
<source>Transcribing…</source>
<translation>Transkription…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Stop</source>
<translation>Stop</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Mic</source>
<translation>Mikro</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="178" />
<source>Message…</source>
<translation>Nachricht…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="186" />
<source>Send</source>
<translation>Senden</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="331" />
<source>Voice mode off after repeated errors</source>
<translation>Sprachmodus nach wiederholten Fehlern aus</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="348" />
<source>Wait for the current reply first</source>
<translation>Warte zuerst auf die laufende Antwort</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="374" />
<source>● Listening — speak, I stop at the pause (tap to exit)</source>
<translation>● Höre zu — sprich, ich stoppe bei der Pause (tippen zum Beenden)</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="378" />
<source>Sending…</source>
<translation>Senden…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="383" />
<source>Voice mode on</source>
<translation>Sprachmodus an</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="404" />
<source>No reply to read yet</source>
<translation>Noch keine Antwort zum Vorlesen</translation>
</message>
</context>
<context>
<name>CoverPage</name>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>1 message</source>
<translation>1 Nachricht</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>%1 messages</source>
<translation>%1 Nachrichten</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Recording…</source>
<translation>Aufnahme…</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Writing…</source>
<translation>Schreibt…</translation>
</message>
</context>
<context>
<name>LoginPage</name>
<message>
<location filename="../qml/pages/LoginPage.qml" line="14" />
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Sign in</source>
<translation>Anmelden</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="22" />
<source>Use the same password you use in the Hermes Web UI in your browser.</source>
<translation>Nutze dasselbe Passwort wie in der Hermes Web UI im Browser.</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="28" />
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="36" />
<source>Password</source>
<translation>Passwort</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Signing in…</source>
<translation>Anmeldung…</translation>
</message>
</context>
<context>
<name>Recorder</name>
<message>
<location filename="../src/recorder.cpp" line="72" />
<source>No audio format available</source>
<translation>Kein Audioformat verfügbar</translation>
</message>
</context>
<context>
<name>SessionsPage</name>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="18" />
<source>Sessions</source>
<translation>Sitzungen</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="22" />
<source>New session</source>
<translation>Neue Sitzung</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="26" />
<source>Refresh</source>
<translation>Aktualisieren</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="30" />
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="34" />
<source>Sign out</source>
<translation>Abmelden</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="70" />
<source>No sessions</source>
<translation>Keine Sitzungen</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="71" />
<source>Pull down to create a new session</source>
<translation>Nach unten ziehen, um eine neue Sitzung zu erstellen</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>1 message</source>
<translation>1 Nachricht</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>%1 messages</source>
<translation>%1 Nachrichten</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="21" />
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="23" />
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="28" />
<source>Web UI address</source>
<translation>Web-UI-Adresse</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="37" />
<source>Voice</source>
<translation>Stimme</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="40" />
<source>Read-aloud voice</source>
<translation>Vorlese-Stimme</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="45" />
<location filename="../qml/pages/SettingsPage.qml" line="73" />
<source>(server default)</source>
<translation>(Server-Standard)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="61" />
<source>Voice presets (comma-separated)</source>
<translation>Stimm-Presets (durch Kommas getrennt)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="69" />
<source>TTS engine</source>
<translation>TTS-Engine</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="89" />
<source>Engine presets (comma-separated)</source>
<translation>Engine-Presets (durch Kommas getrennt)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="97" />
<source>Read replies aloud</source>
<translation>Antworten vorlesen</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="98" />
<source>Speak every completed reply automatically</source>
<translation>Jede fertige Antwort automatisch vorlesen</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="103" />
<source>Voice dialog</source>
<translation>Sprachdialog</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="106" />
<source>Send right after dictation</source>
<translation>Direkt nach dem Diktat senden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="107" />
<source>Send the transcribed text automatically, without tapping Send</source>
<translation>Den transkribierten Text automatisch senden, ohne Senden zu drücken</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="113" />
<source>Auto-stop pause</source>
<translation>Auto-Stopp-Pause</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="119" />
<source>1.0 second</source>
<translation>1,0 Sekunden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="120" />
<source>1.5 seconds</source>
<translation>1,5 Sekunden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="121" />
<source>2.0 seconds</source>
<translation>2,0 Sekunden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="122" />
<source>3.0 seconds</source>
<translation>3,0 Sekunden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="127" />
<source>Mic sensitivity</source>
<translation>Mikrofon-Empfindlichkeit</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="131" />
<source>High (even soft voices)</source>
<translation>Hoch (auch leise Stimmen)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="132" />
<source>Medium</source>
<translation>Mittel</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="133" />
<source>Low (noisy rooms)</source>
<translation>Niedrig (laute Umgebung)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="137" />
<source>Account</source>
<translation>Konto</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="141" />
<source>Sign out</source>
<translation>Abmelden</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="145" />
<source>About</source>
<translation>Über</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="154" />
<source>Native client for the Hermes Web UI (hermes-webui): sessions, live streaming chat, server-side voice dictation and read-aloud.</source>
<translation>Nativer Client für die Hermes Web UI (hermes-webui): Sitzungen, Live-Streaming-Chat, server-seitiges Diktat und Vorlesen.</translation>
</message>
</context>
<context>
<name>VoiceRecorder</name>
<message>
<location filename="../src/voicerecorder.cpp" line="71" />
<source>No audio input device</source>
<translation>Kein Audioeingabegerät</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="94" />
<source>Audio input format not supported</source>
<translation>Audioeingabeformat nicht unterstützt</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="110" />
<source>Could not start audio capture</source>
<translation>Aufnahme konnte nicht gestartet werden</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="213" />
<source>Could not write the audio file</source>
<translation>Audiodatei konnte nicht geschrieben werden</translation>
</message>
</context>
</TS>
+426
View File
@@ -0,0 +1,426 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>ApiClient</name>
<message>
<location filename="../src/apiclient.cpp" line="68" />
<source>Authentication required</source>
<translation>Authentification requise</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="70" />
<source>HTTP %1</source>
<translation>HTTP %1</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="155" />
<source>Server address not configured</source>
<translation>Adresse du serveur non configurée</translation>
</message>
</context>
<context>
<name>ChatModel</name>
<message>
<location filename="../src/chatmodel.cpp" line="91" />
<source>No session open</source>
<translation>Aucune session ouverte</translation>
</message>
<message>
<location filename="../src/chatmodel.cpp" line="96" />
<source>Wait for the current reply</source>
<translation>Attendez la réponse en cours</translation>
</message>
</context>
<context>
<name>ChatPage</name>
<message>
<location filename="../qml/pages/ChatPage.qml" line="41" />
<source>Chat</source>
<translation>Discussion</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="50" />
<location filename="../qml/pages/ChatPage.qml" line="380" />
<source>Hermes is writing…</source>
<translation>Hermes écrit…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="51" />
<location filename="../qml/pages/ChatPage.qml" line="382" />
<source>Speaking…</source>
<translation>Lecture…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: on</source>
<translation>Mode vocal : activé</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: off</source>
<translation>Mode vocal : désactivé</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="62" />
<source>Read last reply aloud</source>
<translation>Lire la dernière réponse</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: on</source>
<translation>Lecture auto : activée</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: off</source>
<translation>Lecture auto : désactivée</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="70" />
<source>Stop playback</source>
<translation>Arrêter la lecture</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="75" />
<source>Cancel run</source>
<translation>Annuler la réponse</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="80" />
<source>Resync</source>
<translation>Resynchroniser</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="143" />
<source>Recording… %1 — tap Stop to transcribe</source>
<translation>Enregistrement… %1 — appuyez sur Stop pour transcrire</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="144" />
<location filename="../qml/pages/ChatPage.qml" line="376" />
<source>Transcribing…</source>
<translation>Transcription…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Stop</source>
<translation>Stop</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Mic</source>
<translation>Micro</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="178" />
<source>Message…</source>
<translation>Message…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="186" />
<source>Send</source>
<translation>Envoyer</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="331" />
<source>Voice mode off after repeated errors</source>
<translation>Mode vocal désactivé après plusieurs erreurs</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="348" />
<source>Wait for the current reply first</source>
<translation>Attendez d'abord la réponse en cours</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="374" />
<source>● Listening — speak, I stop at the pause (tap to exit)</source>
<translation>● À l'écoute — parlez, je m'arrête à la pause (touchez pour quitter)</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="378" />
<source>Sending…</source>
<translation>Envoi…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="383" />
<source>Voice mode on</source>
<translation>Mode vocal activé</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="404" />
<source>No reply to read yet</source>
<translation>Aucune réponse à lire</translation>
</message>
</context>
<context>
<name>CoverPage</name>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>1 message</source>
<translation>1 message</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>%1 messages</source>
<translation>%1 messages</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Recording…</source>
<translation>Enregistrement…</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Writing…</source>
<translation>Écriture…</translation>
</message>
</context>
<context>
<name>LoginPage</name>
<message>
<location filename="../qml/pages/LoginPage.qml" line="14" />
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Sign in</source>
<translation>Se connecter</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="22" />
<source>Use the same password you use in the Hermes Web UI in your browser.</source>
<translation>Utilisez le même mot de passe que dans l'Hermes Web UI de votre navigateur.</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="28" />
<source>Server</source>
<translation>Serveur</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="36" />
<source>Password</source>
<translation>Mot de passe</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Signing in…</source>
<translation>Connexion…</translation>
</message>
</context>
<context>
<name>Recorder</name>
<message>
<location filename="../src/recorder.cpp" line="72" />
<source>No audio format available</source>
<translation>Aucun format audio disponible</translation>
</message>
</context>
<context>
<name>SessionsPage</name>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="18" />
<source>Sessions</source>
<translation>Sessions</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="22" />
<source>New session</source>
<translation>Nouvelle session</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="26" />
<source>Refresh</source>
<translation>Actualiser</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="30" />
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="34" />
<source>Sign out</source>
<translation>Se déconnecter</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="70" />
<source>No sessions</source>
<translation>Aucune session</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="71" />
<source>Pull down to create a new session</source>
<translation>Tirez vers le bas pour créer une nouvelle session</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>1 message</source>
<translation>1 message</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>%1 messages</source>
<translation>%1 messages</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="21" />
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="23" />
<source>Server</source>
<translation>Serveur</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="28" />
<source>Web UI address</source>
<translation>Adresse de la Web UI</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="37" />
<source>Voice</source>
<translation>Voix</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="40" />
<source>Read-aloud voice</source>
<translation>Voix de lecture</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="45" />
<location filename="../qml/pages/SettingsPage.qml" line="73" />
<source>(server default)</source>
<translation>(défaut du serveur)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="61" />
<source>Voice presets (comma-separated)</source>
<translation>Préréglages de voix (séparés par des virgules)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="69" />
<source>TTS engine</source>
<translation>Moteur TTS</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="89" />
<source>Engine presets (comma-separated)</source>
<translation>Préréglages de moteurs (séparés par des virgules)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="97" />
<source>Read replies aloud</source>
<translation>Lire les réponses à voix haute</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="98" />
<source>Speak every completed reply automatically</source>
<translation>Prononcer automatiquement chaque réponse terminée</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="103" />
<source>Voice dialog</source>
<translation>Dialogue vocal</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="106" />
<source>Send right after dictation</source>
<translation>Envoyer juste après la dictée</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="107" />
<source>Send the transcribed text automatically, without tapping Send</source>
<translation>Envoyer automatiquement le texte transcrit, sans appuyer sur Envoyer</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="113" />
<source>Auto-stop pause</source>
<translation>Pause d'arrêt auto</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="119" />
<source>1.0 second</source>
<translation>1,0 seconde</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="120" />
<source>1.5 seconds</source>
<translation>1,5 seconde</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="121" />
<source>2.0 seconds</source>
<translation>2,0 secondes</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="122" />
<source>3.0 seconds</source>
<translation>3,0 secondes</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="127" />
<source>Mic sensitivity</source>
<translation>Sensibilité du micro</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="131" />
<source>High (even soft voices)</source>
<translation>Élevée (voix faibles)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="132" />
<source>Medium</source>
<translation>Moyenne</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="133" />
<source>Low (noisy rooms)</source>
<translation>Faible (pièces bruyantes)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="137" />
<source>Account</source>
<translation>Compte</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="141" />
<source>Sign out</source>
<translation>Se déconnecter</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="145" />
<source>About</source>
<translation>À propos</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="154" />
<source>Native client for the Hermes Web UI (hermes-webui): sessions, live streaming chat, server-side voice dictation and read-aloud.</source>
<translation>Client natif pour l'Hermes Web UI (hermes-webui) : sessions, chat en streaming, dictée et lecture à voix haute côté serveur.</translation>
</message>
</context>
<context>
<name>VoiceRecorder</name>
<message>
<location filename="../src/voicerecorder.cpp" line="71" />
<source>No audio input device</source>
<translation>Aucun périphérique d'entrée audio</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="94" />
<source>Audio input format not supported</source>
<translation>Format d'entrée audio non pris en charge</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="110" />
<source>Could not start audio capture</source>
<translation>Impossible de démarrer l'enregistrement</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="213" />
<source>Could not write the audio file</source>
<translation>Impossible d'écrire le fichier audio</translation>
</message>
</context>
</TS>
+426
View File
@@ -0,0 +1,426 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it_IT">
<context>
<name>ApiClient</name>
<message>
<location filename="../src/apiclient.cpp" line="68" />
<source>Authentication required</source>
<translation>Autenticazione richiesta</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="70" />
<source>HTTP %1</source>
<translation>HTTP %1</translation>
</message>
<message>
<location filename="../src/apiclient.cpp" line="155" />
<source>Server address not configured</source>
<translation>Indirizzo del server non configurato</translation>
</message>
</context>
<context>
<name>ChatModel</name>
<message>
<location filename="../src/chatmodel.cpp" line="91" />
<source>No session open</source>
<translation>Nessuna sessione aperta</translation>
</message>
<message>
<location filename="../src/chatmodel.cpp" line="96" />
<source>Wait for the current reply</source>
<translation>Aspetta la risposta in corso</translation>
</message>
</context>
<context>
<name>ChatPage</name>
<message>
<location filename="../qml/pages/ChatPage.qml" line="41" />
<source>Chat</source>
<translation>Chat</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="50" />
<location filename="../qml/pages/ChatPage.qml" line="380" />
<source>Hermes is writing…</source>
<translation>Hermes sta scrivendo…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="51" />
<location filename="../qml/pages/ChatPage.qml" line="382" />
<source>Speaking…</source>
<translation>Lettura…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: on</source>
<translation>Modalità voce: attiva</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="58" />
<source>Voice mode: off</source>
<translation>Modalità voce: disattiva</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="62" />
<source>Read last reply aloud</source>
<translation>Leggi l'ultima risposta</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: on</source>
<translation>Auto-lettura: attiva</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="66" />
<source>Auto-read: off</source>
<translation>Auto-lettura: disattiva</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="70" />
<source>Stop playback</source>
<translation>Interrompi lettura</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="75" />
<source>Cancel run</source>
<translation>Annulla risposta</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="80" />
<source>Resync</source>
<translation>Risincronizza</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="143" />
<source>Recording… %1 — tap Stop to transcribe</source>
<translation>Registrazione… %1 — tocca Stop per trascrivere</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="144" />
<location filename="../qml/pages/ChatPage.qml" line="376" />
<source>Transcribing…</source>
<translation>Trascrizione…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Stop</source>
<translation>Stop</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="162" />
<source>Mic</source>
<translation>Mic</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="178" />
<source>Message…</source>
<translation>Messaggio…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="186" />
<source>Send</source>
<translation>Invia</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="331" />
<source>Voice mode off after repeated errors</source>
<translation>Modalità voce disattivata dopo errori ripetuti</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="348" />
<source>Wait for the current reply first</source>
<translation>Aspetta prima la risposta in corso</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="374" />
<source>● Listening — speak, I stop at the pause (tap to exit)</source>
<translation>● In ascolto — parla, mi fermo alla pausa (tocca per uscire)</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="378" />
<source>Sending…</source>
<translation>Invio…</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="383" />
<source>Voice mode on</source>
<translation>Modalità voce attiva</translation>
</message>
<message>
<location filename="../qml/pages/ChatPage.qml" line="404" />
<source>No reply to read yet</source>
<translation>Nessuna risposta da leggere</translation>
</message>
</context>
<context>
<name>CoverPage</name>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>1 message</source>
<translation>1 messaggio</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="17" />
<source>%1 messages</source>
<translation>%1 messaggi</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Recording…</source>
<translation>Registrazione…</translation>
</message>
<message>
<location filename="../qml/cover/CoverPage.qml" line="28" />
<source>Writing…</source>
<translation>Scrittura…</translation>
</message>
</context>
<context>
<name>LoginPage</name>
<message>
<location filename="../qml/pages/LoginPage.qml" line="14" />
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Sign in</source>
<translation>Accedi</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="22" />
<source>Use the same password you use in the Hermes Web UI in your browser.</source>
<translation>Usa la stessa password dell'Hermes Web UI nel browser.</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="28" />
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="36" />
<source>Password</source>
<translation>Password</translation>
</message>
<message>
<location filename="../qml/pages/LoginPage.qml" line="47" />
<source>Signing in…</source>
<translation>Accesso in corso…</translation>
</message>
</context>
<context>
<name>Recorder</name>
<message>
<location filename="../src/recorder.cpp" line="72" />
<source>No audio format available</source>
<translation>Nessun formato audio disponibile</translation>
</message>
</context>
<context>
<name>SessionsPage</name>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="18" />
<source>Sessions</source>
<translation>Sessioni</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="22" />
<source>New session</source>
<translation>Nuova sessione</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="26" />
<source>Refresh</source>
<translation>Aggiorna</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="30" />
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="34" />
<source>Sign out</source>
<translation>Esci</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="70" />
<source>No sessions</source>
<translation>Nessuna sessione</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="71" />
<source>Pull down to create a new session</source>
<translation>Tira giù per creare una nuova sessione</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>1 message</source>
<translation>1 messaggio</translation>
</message>
<message>
<location filename="../qml/pages/SessionsPage.qml" line="125" />
<source>%1 messages</source>
<translation>%1 messaggi</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="21" />
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="23" />
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="28" />
<source>Web UI address</source>
<translation>Indirizzo Web UI</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="37" />
<source>Voice</source>
<translation>Voce</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="40" />
<source>Read-aloud voice</source>
<translation>Voce di lettura</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="45" />
<location filename="../qml/pages/SettingsPage.qml" line="73" />
<source>(server default)</source>
<translation>(default del server)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="61" />
<source>Voice presets (comma-separated)</source>
<translation>Preset voci (separati da virgola)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="69" />
<source>TTS engine</source>
<translation>Motore TTS</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="89" />
<source>Engine presets (comma-separated)</source>
<translation>Preset motori (separati da virgola)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="97" />
<source>Read replies aloud</source>
<translation>Leggi le risposte ad alta voce</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="98" />
<source>Speak every completed reply automatically</source>
<translation>Pronuncia automaticamente ogni risposta completata</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="103" />
<source>Voice dialog</source>
<translation>Dialogo vocale</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="106" />
<source>Send right after dictation</source>
<translation>Invia subito dopo la dettatura</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="107" />
<source>Send the transcribed text automatically, without tapping Send</source>
<translation>Invia il testo trascritto automaticamente, senza premere Invia</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="113" />
<source>Auto-stop pause</source>
<translation>Pausa di stop automatico</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="119" />
<source>1.0 second</source>
<translation>1,0 secondi</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="120" />
<source>1.5 seconds</source>
<translation>1,5 secondi</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="121" />
<source>2.0 seconds</source>
<translation>2,0 secondi</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="122" />
<source>3.0 seconds</source>
<translation>3,0 secondi</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="127" />
<source>Mic sensitivity</source>
<translation>Sensibilità microfono</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="131" />
<source>High (even soft voices)</source>
<translation>Alta (anche voci flebili)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="132" />
<source>Medium</source>
<translation>Media</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="133" />
<source>Low (noisy rooms)</source>
<translation>Bassa (ambienti rumorosi)</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="137" />
<source>Account</source>
<translation>Account</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="141" />
<source>Sign out</source>
<translation>Esci</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="145" />
<source>About</source>
<translation>Informazioni</translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="154" />
<source>Native client for the Hermes Web UI (hermes-webui): sessions, live streaming chat, server-side voice dictation and read-aloud.</source>
<translation>Client nativo per l'Hermes Web UI (hermes-webui): sessioni, chat in streaming, dettatura e lettura ad alta voce lato server.</translation>
</message>
</context>
<context>
<name>VoiceRecorder</name>
<message>
<location filename="../src/voicerecorder.cpp" line="71" />
<source>No audio input device</source>
<translation>Nessun dispositivo di ingresso audio</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="94" />
<source>Audio input format not supported</source>
<translation>Formato audio di ingresso non supportato</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="110" />
<source>Could not start audio capture</source>
<translation>Impossibile avviare la registrazione</translation>
</message>
<message>
<location filename="../src/voicerecorder.cpp" line="213" />
<source>Could not write the audio file</source>
<translation>Impossibile scrivere il file audio</translation>
</message>
</context>
</TS>