Better localized strings for date/numbers, fixes #539

This commit is contained in:
emeric
2024-10-30 18:17:58 +01:00
parent 41504bf4d7
commit ea49b0eeb8
8 changed files with 175 additions and 24 deletions
+9 -2
View File
@@ -34,6 +34,13 @@
</message> </message>
<message id="Lms.user">User</message> <message id="Lms.user">User</message>
<!--Locale-->
<message id="Lms.locale.decimal-point">.</message>
<message id="Lms.locale.group-separator">,</message>
<message id="Lms.locale.date-format">MM/dd/yyyy</message>
<message id="Lms.locale.time-format">HH:mm:ss</message>
<message id="Lms.locale.date-time-format">MM/dd/yyyy HH:mm:ss</message>
<!--Errors--> <!--Errors-->
<message id="Lms.Error.artist-not-found">Artist not found</message> <message id="Lms.Error.artist-not-found">Artist not found</message>
<message id="Lms.Error.error-occurred">Error occured!</message> <message id="Lms.Error.error-occurred">Error occured!</message>
@@ -99,7 +106,7 @@
<message id="Lms.Admin.ScannerController.get-report">Get report</message> <message id="Lms.Admin.ScannerController.get-report">Get report</message>
<message id="Lms.Admin.ScannerController.last-scan">Last scan</message> <message id="Lms.Admin.ScannerController.last-scan">Last scan</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">Not available</message> <message id="Lms.Admin.ScannerController.last-scan-not-available">Not available</message>
<message id="Lms.Admin.ScannerController.last-scan-status">Scanned {1} files in {2} on {3} ({4} errors, {5} duplicates)</message> <message id="Lms.Admin.ScannerController.last-scan-status">{1} files were scanned in {2} at {4} on {3} (UTC) - {5} errors, {6} duplicates</message>
<message id="Lms.Admin.ScannerController.no-audio-track">No audio track</message> <message id="Lms.Admin.ScannerController.no-audio-track">No audio track</message>
<message id="Lms.Admin.ScannerController.same-hash">Duplicated file hash</message> <message id="Lms.Admin.ScannerController.same-hash">Duplicated file hash</message>
<message id="Lms.Admin.ScannerController.same-mbid">Duplicated track MBID</message> <message id="Lms.Admin.ScannerController.same-mbid">Duplicated track MBID</message>
@@ -108,7 +115,7 @@
<message id="Lms.Admin.ScannerController.scanner">Scanner</message> <message id="Lms.Admin.ScannerController.scanner">Scanner</message>
<message id="Lms.Admin.ScannerController.status">Status</message> <message id="Lms.Admin.ScannerController.status">Status</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">Not scheduled</message> <message id="Lms.Admin.ScannerController.status-not-scheduled">Not scheduled</message>
<message id="Lms.Admin.ScannerController.status-scheduled">Scheduled on {1}</message> <message id="Lms.Admin.ScannerController.status-scheduled">Scheduled at {2} on {1} (UTC)</message>
<message id="Lms.Admin.ScannerController.status-in-progress">Scanning: step {1}/{2}</message> <message id="Lms.Admin.ScannerController.status-in-progress">Scanning: step {1}/{2}</message>
<message id="Lms.Admin.ScannerController.step-associating-artist-images">Associating artist images: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-artist-images">Associating artist images: {1}%...</message>
<message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Associating external lyrics: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Associating external lyrics: {1}%...</message>
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<messages xmlns:if="Wt.WTemplate.conditions"
nplurals="2" plural="n > 1 ? 1 : 0">
<!--Locale-->
<message id="Lms.locale.decimal-point">.</message>
<message id="Lms.locale.group-separator">,</message>
<message id="Lms.locale.date-format">MM/dd/yyyy</message>
<message id="Lms.locale.time-format">hh:mm:ss a</message>
<message id="Lms.locale.date-time-format">MM/dd/yyyy hh:mm:ss a</message>
</messages>
+39 -2
View File
@@ -34,6 +34,13 @@
</message> </message>
<message id="Lms.user">Utilisateur</message> <message id="Lms.user">Utilisateur</message>
<!--Locale-->
<message id="Lms.locale.decimal-point">,</message>
<message id="Lms.locale.group-separator"> </message>
<message id="Lms.locale.date-format">dd/MM/yyyy</message>
<message id="Lms.locale.time-format">HH:mm:ss</message>
<message id="Lms.locale.date-time-format">dd/MM/yyyy HH:mm:ss</message>
<!--Errors--> <!--Errors-->
<message id="Lms.Error.artist-not-found">Cet artiste n'existe pas</message> <message id="Lms.Error.artist-not-found">Cet artiste n'existe pas</message>
<message id="Lms.Error.error-occurred">Une erreur est survenue!</message> <message id="Lms.Error.error-occurred">Une erreur est survenue!</message>
@@ -99,7 +106,7 @@
<message id="Lms.Admin.ScannerController.get-report">Rapport</message> <message id="Lms.Admin.ScannerController.get-report">Rapport</message>
<message id="Lms.Admin.ScannerController.last-scan">Dernier scan</message> <message id="Lms.Admin.ScannerController.last-scan">Dernier scan</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">Non disponible</message> <message id="Lms.Admin.ScannerController.last-scan-not-available">Non disponible</message>
<message id="Lms.Admin.ScannerController.last-scan-status">{1} fichiers scannés en {2} le {3} ({4} erreurs, {5} duplicatas)</message> <message id="Lms.Admin.ScannerController.last-scan-status">{1} fichiers analysés en {2} à {4} le {3} (UTC) - {5} erreurs, {6} duplicatas</message>
<message id="Lms.Admin.ScannerController.no-audio-track">Pas de piste audio</message> <message id="Lms.Admin.ScannerController.no-audio-track">Pas de piste audio</message>
<message id="Lms.Admin.ScannerController.same-hash">Hash dupliqué</message> <message id="Lms.Admin.ScannerController.same-hash">Hash dupliqué</message>
<message id="Lms.Admin.ScannerController.same-mbid">Track MBID dupliqué</message> <message id="Lms.Admin.ScannerController.same-mbid">Track MBID dupliqué</message>
@@ -108,7 +115,7 @@
<message id="Lms.Admin.ScannerController.scanner">Scanner</message> <message id="Lms.Admin.ScannerController.scanner">Scanner</message>
<message id="Lms.Admin.ScannerController.status">Statut</message> <message id="Lms.Admin.ScannerController.status">Statut</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">Non planifié</message> <message id="Lms.Admin.ScannerController.status-not-scheduled">Non planifié</message>
<message id="Lms.Admin.ScannerController.status-scheduled">Planifié le {1}</message> <message id="Lms.Admin.ScannerController.status-scheduled">Planifié à {2} le {1} (UTC)</message>
<message id="Lms.Admin.ScannerController.status-in-progress">En cours de scan : étape {1}/{2}</message> <message id="Lms.Admin.ScannerController.status-in-progress">En cours de scan : étape {1}/{2}</message>
<message id="Lms.Admin.ScannerController.step-associating-artist-images">Association des images des artistes: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-artist-images">Association des images des artistes: {1}%...</message>
<message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Association des paroles externes: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Association des paroles externes: {1}%...</message>
@@ -331,6 +338,36 @@
<message id="Lms.Settings.settings-saved">Paramètres sauvegardés !</message> <message id="Lms.Settings.settings-saved">Paramètres sauvegardés !</message>
<!--Wt--> <!--Wt-->
<message id="Wt.WDateTime.LessThanASecond">moins d'une seconde</message>
<message id="Wt.WDateTime.seconds">
<plural case="0">une second</plural>
<plural case="1">{1} secondes</plural>
</message>
<message id="Wt.WDateTime.minutes">
<plural case="0">une minute</plural>
<plural case="1">{1} minutes</plural>
</message>
<message id="Wt.WDateTime.hours">
<plural case="0">une houre</plural>
<plural case="1">{1} houres</plural>
</message>
<message id="Wt.WDateTime.days">
<plural case="0">un jour</plural>
<plural case="1">{1} jours</plural>
</message>
<message id="Wt.WDateTime.weeks">
<plural case="0">une semaine</plural>
<plural case="1">{1} semaines</plural>
</message>
<message id="Wt.WDateTime.months">
<plural case="0">un mois</plural>
<plural case="1">{1} mois</plural>
</message>
<message id="Wt.WDateTime.years">
<plural case="0">une année</plural>
<plural case="1">{1} années</plural>
</message>
<message id="Wt.WDateTime.null"></message>
<message id="Wt.WMessageBox.Yes">Oui</message> <message id="Wt.WMessageBox.Yes">Oui</message>
<message id="Wt.WMessageBox.No">Non</message> <message id="Wt.WMessageBox.No">Non</message>
<message id="Wt.WValidator.Invalid">Ce champ ne peut pas être vide</message> <message id="Wt.WValidator.Invalid">Ce champ ne peut pas être vide</message>
+39 -2
View File
@@ -34,6 +34,13 @@
</message> </message>
<message id="Lms.user">Utente</message> <message id="Lms.user">Utente</message>
<!--Locale-->
<message id="Lms.locale.decimal-point">,</message>
<message id="Lms.locale.group-separator">.</message>
<message id="Lms.locale.date-format">dd/MM/yyyy</message>
<message id="Lms.locale.time-format">HH:mm:ss</message>
<message id="Lms.locale.date-time-format">dd/MM/yyyy HH:mm:ss</message>
<!--Errors--> <!--Errors-->
<message id="Lms.Error.artist-not-found">Artista non trovato</message> <message id="Lms.Error.artist-not-found">Artista non trovato</message>
<message id="Lms.Error.error-occurred">C'è stato un errore!</message> <message id="Lms.Error.error-occurred">C'è stato un errore!</message>
@@ -99,7 +106,7 @@
<message id="Lms.Admin.ScannerController.get-report">Scarica un resoconto</message> <message id="Lms.Admin.ScannerController.get-report">Scarica un resoconto</message>
<message id="Lms.Admin.ScannerController.last-scan">Ultima scansione</message> <message id="Lms.Admin.ScannerController.last-scan">Ultima scansione</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">Non disponibile</message> <message id="Lms.Admin.ScannerController.last-scan-not-available">Non disponibile</message>
<message id="Lms.Admin.ScannerController.last-scan-status">Scansionati {1} files in {2} su {3} ({4} errori, {5} duplicati)</message> <message id="Lms.Admin.ScannerController.last-scan-status">{1} file scansionati in {2} alle {3} il {4} (UTC) - {5} errori, {6} duplicati</message>
<message id="Lms.Admin.ScannerController.no-audio-track">Nessuna traccia audio</message> <message id="Lms.Admin.ScannerController.no-audio-track">Nessuna traccia audio</message>
<message id="Lms.Admin.ScannerController.same-hash">Hash doppio</message> <message id="Lms.Admin.ScannerController.same-hash">Hash doppio</message>
<message id="Lms.Admin.ScannerController.same-mbid">Track MBID doppio</message> <message id="Lms.Admin.ScannerController.same-mbid">Track MBID doppio</message>
@@ -108,7 +115,7 @@
<message id="Lms.Admin.ScannerController.scanner">Scanner</message> <message id="Lms.Admin.ScannerController.scanner">Scanner</message>
<message id="Lms.Admin.ScannerController.status">Stato</message> <message id="Lms.Admin.ScannerController.status">Stato</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">Non pianificato</message> <message id="Lms.Admin.ScannerController.status-not-scheduled">Non pianificato</message>
<message id="Lms.Admin.ScannerController.status-scheduled">Pianificato il {1}</message> <message id="Lms.Admin.ScannerController.status-scheduled">Programmato alle {2} del {1} (UTC)</message>
<message id="Lms.Admin.ScannerController.status-in-progress">Scansione: passo {1}/{2}</message> <message id="Lms.Admin.ScannerController.status-in-progress">Scansione: passo {1}/{2}</message>
<message id="Lms.Admin.ScannerController.step-associating-artist-images">Associando immagini degli artisti: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-artist-images">Associando immagini degli artisti: {1}%...</message>
<message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Associazione dei testi esterni: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Associazione dei testi esterni: {1}%...</message>
@@ -331,6 +338,36 @@
<message id="Lms.Settings.settings-saved">Nuove impostazioni salvate!</message> <message id="Lms.Settings.settings-saved">Nuove impostazioni salvate!</message>
<!--Wt--> <!--Wt-->
<message id="Wt.WDateTime.LessThanASecond">meno di un secondo</message>
<message id="Wt.WDateTime.seconds">
<plural case="0">un secondo</plural>
<plural case="1">{1} secondi</plural>
</message>
<message id="Wt.WDateTime.minutes">
<plural case="0">un minuto</plural>
<plural case="1">{1} minuti</plural>
</message>
<message id="Wt.WDateTime.hours">
<plural case="0">un'ora</plural>
<plural case="1">{1} ore</plural>
</message>
<message id="Wt.WDateTime.days">
<plural case="0">un giorno</plural>
<plural case="1">{1} giorni</plural>
</message>
<message id="Wt.WDateTime.weeks">
<plural case="0">una settimana</plural>
<plural case="1">{1} settimane</plural>
</message>
<message id="Wt.WDateTime.months">
<plural case="0">un mese</plural>
<plural case="1">{1} mesi</plural>
</message>
<message id="Wt.WDateTime.years">
<plural case="0">un anno</plural>
<plural case="1">{1} anni</plural>
</message>
<message id="Wt.WDateTime.null"></message>
<message id="Wt.WMessageBox.Yes">Si</message> <message id="Wt.WMessageBox.Yes">Si</message>
<message id="Wt.WMessageBox.No">No</message> <message id="Wt.WMessageBox.No">No</message>
<message id="Wt.WValidator.Invalid">Questo campo non può essere vuoto</message> <message id="Wt.WValidator.Invalid">Questo campo non può essere vuoto</message>
+47 -2
View File
@@ -35,6 +35,13 @@
</message> </message>
<message id="Lms.user">Użytkownik</message> <message id="Lms.user">Użytkownik</message>
<!--Locale-->
<message id="Lms.locale.decimal-point">,</message>
<message id="Lms.locale.group-separator"> </message>
<message id="Lms.locale.date-format">dd.MM.yyyy</message>
<message id="Lms.locale.time-format">HH:mm:ss</message>
<message id="Lms.locale.date-time-format">dd.MM.yyyy HH:mm:ss</message>
<!--Errors--> <!--Errors-->
<message id="Lms.Error.artist-not-found">Artysta nie odnaleziony</message> <message id="Lms.Error.artist-not-found">Artysta nie odnaleziony</message>
<message id="Lms.Error.error-occurred">Wystąpił błąd!</message> <message id="Lms.Error.error-occurred">Wystąpił błąd!</message>
@@ -108,7 +115,7 @@
<message id="Lms.Admin.ScannerController.get-report">Pokaż raport</message> <message id="Lms.Admin.ScannerController.get-report">Pokaż raport</message>
<message id="Lms.Admin.ScannerController.last-scan">Ostatnie skanowanie</message> <message id="Lms.Admin.ScannerController.last-scan">Ostatnie skanowanie</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">Niedostępne</message> <message id="Lms.Admin.ScannerController.last-scan-not-available">Niedostępne</message>
<message id="Lms.Admin.ScannerController.last-scan-status">Przeskanowano {1} plików w {2} o {3} ({4} błędów, {5} duplikatów)</message> <message id="Lms.Admin.ScannerController.last-scan-status">Przeskanowano {1} plików w {2} o {4} dnia {3} (UTC) - {5} błędów, {6} duplikatów</message>
<message id="Lms.Admin.ScannerController.no-audio-track">Brak ścieżki dźwiękowej</message> <message id="Lms.Admin.ScannerController.no-audio-track">Brak ścieżki dźwiękowej</message>
<message id="Lms.Admin.ScannerController.same-hash">Zduplikowny hash pliku</message> <message id="Lms.Admin.ScannerController.same-hash">Zduplikowny hash pliku</message>
<message id="Lms.Admin.ScannerController.same-mbid">Zduplikowany MBID pliku</message> <message id="Lms.Admin.ScannerController.same-mbid">Zduplikowany MBID pliku</message>
@@ -117,7 +124,7 @@
<message id="Lms.Admin.ScannerController.scanner">Skaner</message> <message id="Lms.Admin.ScannerController.scanner">Skaner</message>
<message id="Lms.Admin.ScannerController.status">Status</message> <message id="Lms.Admin.ScannerController.status">Status</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">Nie zaplanowano</message> <message id="Lms.Admin.ScannerController.status-not-scheduled">Nie zaplanowano</message>
<message id="Lms.Admin.ScannerController.status-scheduled">Zaplanowano na {1}</message> <message id="Lms.Admin.ScannerController.status-scheduled">Zaplanowano o {2} dnia {1} (UTC)</message>
<message id="Lms.Admin.ScannerController.status-in-progress">Skanowanie: krok {1}/{2}</message> <message id="Lms.Admin.ScannerController.status-in-progress">Skanowanie: krok {1}/{2}</message>
<message id="Lms.Admin.ScannerController.step-associating-artist-images">Kojarzenie obrazów artystów: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-artist-images">Kojarzenie obrazów artystów: {1}%...</message>
<message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Kojarzenie zewnętrznych tekstów: {1}%...</message> <message id="Lms.Admin.ScannerController.step-associating-external-lyrics">Kojarzenie zewnętrznych tekstów: {1}%...</message>
@@ -356,4 +363,42 @@
<message id="Lms.Settings.transcoding-mode.never">Nigdy</message> <message id="Lms.Settings.transcoding-mode.never">Nigdy</message>
<message id="Lms.Settings.settings-saved">Ustawienia zapisane!</message> <message id="Lms.Settings.settings-saved">Ustawienia zapisane!</message>
<!--Wt-->
<message id="Wt.WDateTime.LessThanASecond">mniej niż sekunda</message>
<message id="Wt.WDateTime.seconds">
<plural case="0">jedna sekunda</plural>
<plural case="1">{1} sekundy</plural>
<plural case="2">{1} sekund</plural>
</message>
<message id="Wt.WDateTime.minutes">
<plural case="0">jedna minuta</plural>
<plural case="1">{1} minuty</plural>
<plural case="2">{1} minut</plural>
</message>
<message id="Wt.WDateTime.hours">
<plural case="0">jedna godzina</plural>
<plural case="1">{1} godziny</plural>
<plural case="2">{1} godzin</plural>
</message>
<message id="Wt.WDateTime.days">
<plural case="0">jeden dzień</plural>
<plural case="1">{1} dni</plural>
<plural case="2">{1} dni</plural>
</message>
<message id="Wt.WDateTime.weeks">
<plural case="0">jeden tydzień</plural>
<plural case="1">{1} tygodnie</plural>
<plural case="2">{1} tygodni</plural>
</message>
<message id="Wt.WDateTime.months">
<plural case="0">jeden miesiąc</plural>
<plural case="1">{1} miesiące</plural>
<plural case="2">{1} miesięcy</plural>
</message>
<message id="Wt.WDateTime.years">
<plural case="0">jeden rok</plural>
<plural case="1">{1} lata</plural>
<plural case="2">{1} lat</plural>
</message>
<message id="Wt.WDateTime.null"></message>
</messages> </messages>
+9 -2
View File
@@ -34,6 +34,13 @@
<message id="Lms.user">用户</message> <message id="Lms.user">用户</message>
<!--Locale-->
<message id="Lms.locale.decimal-point">.</message>
<message id="Lms.locale.group-separator">,</message>
<message id="Lms.locale.date-format">yyyy/MM/dd</message>
<message id="Lms.locale.time-format">HH:mm:ss</message>
<message id="Lms.locale.date-time-format">yyyy/MM/dd HH:mm:ss</message>
<!--Errors--> <!--Errors-->
<message id="Lms.Error.artist-not-found">歌手未找到</message> <message id="Lms.Error.artist-not-found">歌手未找到</message>
<message id="Lms.Error.error-occurred">发生错误!</message> <message id="Lms.Error.error-occurred">发生错误!</message>
@@ -99,7 +106,7 @@
<message id="Lms.Admin.ScannerController.get-report">生成报告</message> <message id="Lms.Admin.ScannerController.get-report">生成报告</message>
<message id="Lms.Admin.ScannerController.last-scan">最后扫描</message> <message id="Lms.Admin.ScannerController.last-scan">最后扫描</message>
<message id="Lms.Admin.ScannerController.last-scan-not-available">不可用</message> <message id="Lms.Admin.ScannerController.last-scan-not-available">不可用</message>
<message id="Lms.Admin.ScannerController.last-scan-status">在 {2} 内扫描了 {3} 的 {1} 个文件({4} 个错误, {5} 个副本)</message> <message id="Lms.Admin.ScannerController.last-scan-status">已扫描 {1} 个文件,用时 {2},在 {3} 的 {4} (UTC) - {5} 个错误,{6} 个重复项</message>
<message id="Lms.Admin.ScannerController.no-audio-track">没有音轨</message> <message id="Lms.Admin.ScannerController.no-audio-track">没有音轨</message>
<message id="Lms.Admin.ScannerController.same-hash">相同文件哈希值</message> <message id="Lms.Admin.ScannerController.same-hash">相同文件哈希值</message>
<message id="Lms.Admin.ScannerController.same-mbid">相同 MBID</message> <message id="Lms.Admin.ScannerController.same-mbid">相同 MBID</message>
@@ -108,7 +115,7 @@
<message id="Lms.Admin.ScannerController.scanner">扫描器</message> <message id="Lms.Admin.ScannerController.scanner">扫描器</message>
<message id="Lms.Admin.ScannerController.status">状态</message> <message id="Lms.Admin.ScannerController.status">状态</message>
<message id="Lms.Admin.ScannerController.status-not-scheduled">无计划</message> <message id="Lms.Admin.ScannerController.status-not-scheduled">无计划</message>
<message id="Lms.Admin.ScannerController.status-scheduled">计划于 {1}</message> <message id="Lms.Admin.ScannerController.status-scheduled">计划于 {2} 在 {1} (UTC)</message>
<message id="Lms.Admin.ScannerController.status-in-progress">扫描中: 阶段 {1}/{2}</message> <message id="Lms.Admin.ScannerController.status-in-progress">扫描中: 阶段 {1}/{2}</message>
+14 -1
View File
@@ -111,6 +111,18 @@ namespace lms::ui
return res; return res;
} }
Wt::WLocale createLocale(const std::string& name)
{
Wt::WLocale locale{ name };
locale.setDecimalPoint(Wt::WString::tr("Lms.locale.decimal-point").toUTF8());
locale.setGroupSeparator(Wt::WString::tr("Lms.locale.group-separator").toUTF8());
locale.setDateFormat(Wt::WString::tr("Lms.locale.date-format").toUTF8());
locale.setTimeFormat(Wt::WString::tr("Lms.locale.time-format").toUTF8());
locale.setDateTimeFormat(Wt::WString::tr("Lms.locale.date-time-format").toUTF8());
return locale;
}
enum IdxRoot enum IdxRoot
{ {
IdxExplore = 0, IdxExplore = 0,
@@ -274,6 +286,7 @@ namespace lms::ui
setTitle(); setTitle();
setLocalizedStrings(getOrCreateMessageBundle()); setLocalizedStrings(getOrCreateMessageBundle());
setLocale(createLocale(Wt::WLocale::currentLocale().name()));
// Handle Media Scanner events and other session events // Handle Media Scanner events and other session events
enableUpdates(true); enableUpdates(true);
@@ -362,7 +375,7 @@ namespace lms::ui
setUserInfo(userId, strongAuth); setUserInfo(userId, strongAuth);
LMS_LOG(UI, INFO, "User '" << getUserLoginName() << "' logged in from '" << environment().clientAddress() << "', user agent = " << environment().userAgent()); LMS_LOG(UI, INFO, "User '" << getUserLoginName() << "' logged in from '" << environment().clientAddress() << "', user agent = " << environment().userAgent() << ", locale = '" << locale().name() << "'");
_appManager.registerApplication(*this); _appManager.registerApplication(*this);
_appManager.applicationRegistered.connect(this, [this](LmsApplication& otherApplication) { _appManager.applicationRegistered.connect(this, [this](LmsApplication& otherApplication) {
+6 -13
View File
@@ -24,6 +24,7 @@
#include <Wt/Http/Response.h> #include <Wt/Http/Response.h>
#include <Wt/WCheckBox.h> #include <Wt/WCheckBox.h>
#include <Wt/WDateTime.h> #include <Wt/WDateTime.h>
#include <Wt/WLocale.h>
#include <Wt/WPushButton.h> #include <Wt/WPushButton.h>
#include <Wt/WResource.h> #include <Wt/WResource.h>
@@ -40,17 +41,7 @@ namespace lms::ui
{ {
std::string durationToString(const Wt::WDateTime& begin, const Wt::WDateTime& end) std::string durationToString(const Wt::WDateTime& begin, const Wt::WDateTime& end)
{ {
const auto secs{ std::chrono::duration_cast<std::chrono::seconds>(end.toTimePoint() - begin.toTimePoint()).count() }; return begin.timeTo(end).toUTF8();
std::ostringstream oss;
if (secs >= 3600)
oss << secs / 3600 << "h";
if (secs >= 60)
oss << std::setw(2) << std::setfill('0') << (secs % 3600) / 60 << "m";
oss << std::setw(2) << std::setfill('0') << (secs % 60) << "s";
return oss.str();
} }
} // namespace } // namespace
@@ -222,7 +213,8 @@ namespace lms::ui
_lastScanStatus->setText(Wt::WString::tr("Lms.Admin.ScannerController.last-scan-status") _lastScanStatus->setText(Wt::WString::tr("Lms.Admin.ScannerController.last-scan-status")
.arg(status.lastCompleteScanStats->nbFiles()) .arg(status.lastCompleteScanStats->nbFiles())
.arg(durationToString(status.lastCompleteScanStats->startTime, status.lastCompleteScanStats->stopTime)) .arg(durationToString(status.lastCompleteScanStats->startTime, status.lastCompleteScanStats->stopTime))
.arg(status.lastCompleteScanStats->stopTime.toString()) .arg(status.lastCompleteScanStats->stopTime.date().toString(Wt::WLocale::currentLocale().dateFormat()))
.arg(status.lastCompleteScanStats->stopTime.time().toString(Wt::WLocale::currentLocale().timeFormat()))
.arg(status.lastCompleteScanStats->errors.size()) .arg(status.lastCompleteScanStats->errors.size())
.arg(status.lastCompleteScanStats->duplicates.size())); .arg(status.lastCompleteScanStats->duplicates.size()));
@@ -249,7 +241,8 @@ namespace lms::ui
case IScannerService::State::Scheduled: case IScannerService::State::Scheduled:
_status->setText(Wt::WString::tr("Lms.Admin.ScannerController.status-scheduled") _status->setText(Wt::WString::tr("Lms.Admin.ScannerController.status-scheduled")
.arg(status.nextScheduledScan.toString())); .arg(status.nextScheduledScan.date().toString(Wt::WLocale::currentLocale().dateFormat()))
.arg(status.nextScheduledScan.time().toString(Wt::WLocale::currentLocale().timeFormat())));
_stepStatus->setText(""); _stepStatus->setText("");
break; break;