From d0db7f5ce32ce394000b10da8bfe99e287342b2c Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 12 Dec 2022 13:03:41 +0100 Subject: [PATCH] Resolve #760 --- dev/Common/Translator.js | 11 ++++--- dev/Model/Message.js | 4 ++- dev/Settings/User/General.js | 4 +++ dev/Stores/Language.js | 2 ++ dev/prototype.js | 33 ++++++++++++++----- .../0.0.0/app/libraries/RainLoop/Actions.php | 2 ++ .../app/libraries/RainLoop/Actions/User.php | 1 + .../v/0.0.0/app/localization/ar-SA/user.json | 1 + .../v/0.0.0/app/localization/bg-BG/user.json | 1 + .../v/0.0.0/app/localization/cs-CZ/user.json | 1 + .../v/0.0.0/app/localization/da-DK/user.json | 1 + .../v/0.0.0/app/localization/de-DE/user.json | 1 + .../v/0.0.0/app/localization/el-GR/user.json | 1 + .../v/0.0.0/app/localization/en-GB/user.json | 1 + .../v/0.0.0/app/localization/en/user.json | 1 + .../v/0.0.0/app/localization/es-ES/user.json | 1 + .../v/0.0.0/app/localization/et-EE/user.json | 1 + .../v/0.0.0/app/localization/eu/admin.json | 2 +- .../v/0.0.0/app/localization/eu/user.json | 5 +-- .../v/0.0.0/app/localization/fa-IR/user.json | 1 + .../v/0.0.0/app/localization/fi-FI/user.json | 1 + .../v/0.0.0/app/localization/fr-FR/user.json | 1 + .../v/0.0.0/app/localization/hu-HU/user.json | 1 + .../v/0.0.0/app/localization/id-ID/user.json | 1 + .../v/0.0.0/app/localization/is-IS/user.json | 1 + .../v/0.0.0/app/localization/it-IT/user.json | 1 + .../v/0.0.0/app/localization/ja-JP/user.json | 1 + .../v/0.0.0/app/localization/ko-KR/user.json | 1 + .../v/0.0.0/app/localization/lt-LT/user.json | 1 + .../v/0.0.0/app/localization/lv-LV/user.json | 1 + .../v/0.0.0/app/localization/nb-NO/user.json | 1 + .../v/0.0.0/app/localization/nl-NL/user.json | 1 + .../v/0.0.0/app/localization/pl-PL/user.json | 1 + .../v/0.0.0/app/localization/pt-BR/user.json | 1 + .../v/0.0.0/app/localization/pt-PT/user.json | 1 + .../v/0.0.0/app/localization/pt/user.json | 1 + .../v/0.0.0/app/localization/ro-RO/user.json | 1 + .../v/0.0.0/app/localization/ru-RU/user.json | 1 + .../v/0.0.0/app/localization/sk-SK/user.json | 1 + .../v/0.0.0/app/localization/sl-SI/user.json | 1 + .../v/0.0.0/app/localization/sv-SE/user.json | 1 + .../v/0.0.0/app/localization/tr-TR/user.json | 1 + .../v/0.0.0/app/localization/uk-UA/user.json | 1 + .../v/0.0.0/app/localization/vi-VN/user.json | 1 + .../v/0.0.0/app/localization/zh-CN/user.json | 1 + .../v/0.0.0/app/localization/zh-TW/user.json | 1 + .../templates/Views/User/SettingsGeneral.html | 12 +++++++ 47 files changed, 95 insertions(+), 18 deletions(-) diff --git a/dev/Common/Translator.js b/dev/Common/Translator.js index 38401f0c8..22f791e6f 100644 --- a/dev/Common/Translator.js +++ b/dev/Common/Translator.js @@ -4,6 +4,7 @@ import { langLink } from 'Common/Links'; import { doc, createElement } from 'Common/Globals'; import { getKeyByValue, forEachObjectEntry } from 'Common/Utils'; import { pInt } from 'Common/Utils'; +import { LanguageStore } from 'Stores/Language'; let I18N_DATA = {}; @@ -87,17 +88,17 @@ export const const mt = m.getTime(), date = new Date, dt = date.setHours(0,0,0,0); if (mt > dt) - return i18n('MESSAGE_LIST/TODAY_AT', {TIME: m.format('LT')}); + return i18n('MESSAGE_LIST/TODAY_AT', {TIME: m.format('LT',0,LanguageStore.hourCycle())}); if (mt > dt - 86400000) - return i18n('MESSAGE_LIST/YESTERDAY_AT', {TIME: m.format('LT')}); + return i18n('MESSAGE_LIST/YESTERDAY_AT', {TIME: m.format('LT',0,LanguageStore.hourCycle())}); if (date.getFullYear() === m.getFullYear()) return m.format('d M'); - return m.format('LL'); + return m.format('LL',0,LanguageStore.hourCycle()); } case 'FULL': - return m.format('LLL'); + return m.format('LLL',0,LanguageStore.hourCycle()); default: - return m.format(formatStr); + return m.format(formatStr,0,LanguageStore.hourCycle()); } } diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 6404670c5..bdbfd5926 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -19,6 +19,8 @@ import { AbstractModel } from 'Knoin/AbstractModel'; import PreviewHTML from 'Html/PreviewMessage.html'; +import { LanguageStore } from 'Stores/Language'; + //import { MessageFlagsCache } from 'Common/Cache'; import Remote from 'Remote/User/Fetch'; @@ -456,7 +458,7 @@ export class MessageModel extends AbstractModel { sdoc.write(PreviewHTML .replace('', '<title>'+subject) // eslint-disable-next-line max-len - .replace('<body>', `<body style="background-color:${prop('background-color')};color:${prop('color')}"><header><h1>${subject}</h1><time>${encodeHtml(m ? m.format('LLL') : '')}</time><div>${encodeHtml(this.fromToLine())}</div><div>${encodeHtml(i18n('GLOBAL/TO'))}: ${encodeHtml(this.toToLine())}</div>${cc}</header><${mode}>${this.bodyAsHTML()}</${mode}>`) + .replace('<body>', `<body style="background-color:${prop('background-color')};color:${prop('color')}"><header><h1>${subject}</h1><time>${encodeHtml(m ? m.format('LLL',0,LanguageStore.hourCycle()) : '')}</time><div>${encodeHtml(this.fromToLine())}</div><div>${encodeHtml(i18n('GLOBAL/TO'))}: ${encodeHtml(this.toToLine())}</div>${cc}</header><${mode}>${this.bodyAsHTML()}</${mode}>`) ); sdoc.close(); diff --git a/dev/Settings/User/General.js b/dev/Settings/User/General.js index f2e1430e6..60344a6c7 100644 --- a/dev/Settings/User/General.js +++ b/dev/Settings/User/General.js @@ -30,6 +30,7 @@ export class UserSettingsGeneral extends AbstractViewSettings { this.language = LanguageStore.language; this.languages = LanguageStore.languages; + this.hourCycle = LanguageStore.hourCycle; this.soundNotification = SMAudio.notifications; this.notificationSound = ko.observable(SettingsGet('NotificationSound')); @@ -115,6 +116,9 @@ export class UserSettingsGeneral extends AbstractViewSettings { .then(() => Remote.saveSetting('Language', value)); }, + hourCycle: value => + Remote.saveSetting('hourCycle', value), + removeColors: value => { let dom = MessageUserStore.bodiesDom(); if (dom) { diff --git a/dev/Stores/Language.js b/dev/Stores/Language.js index 1bb8566ba..844f961f8 100644 --- a/dev/Stores/Language.js +++ b/dev/Stores/Language.js @@ -6,11 +6,13 @@ export const LanguageStore = { language: ko.observable(''), languages: ko.observableArray(), userLanguage: ko.observable(''), + hourCycle: ko.observable(''), populate: function() { const aLanguages = Settings.app('languages'); this.languages(isArray(aLanguages) ? aLanguages : []); this.language(SettingsGet('Language')); this.userLanguage(SettingsGet('UserLanguage')); + this.hourCycle(SettingsGet('hourCycle')); } } diff --git a/dev/prototype.js b/dev/prototype.js index 1ee2c9be6..ed977b05f 100644 --- a/dev/prototype.js +++ b/dev/prototype.js @@ -7,12 +7,20 @@ Date.defineRelativeTimeFormat = config => relativeTime = config; + // full = Monday, December 12, 2022 at 12:16:21 PM Central European Standard Time + // long = December 12, 2022 at 12:16:21 PM GMT+1 + // medium = Dec 12, 2022, 12:16:21 PM + // short = 12/12/22, 12:16 PM let formats = { - LT : {hour: 'numeric', minute: 'numeric'}, + LT : {timeStyle: 'short'}, +// LT : {hour: 'numeric', minute: 'numeric'}, L : {}, - LL : {year: 'numeric', month: 'short', day: 'numeric'}, - LLL : {year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric'}, - LLLL : {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric'}, + LL : {dateStyle: 'medium'}, +// LL : {year: 'numeric', month: 'short', day: 'numeric'}, + LLL : {dateStyle: 'long', timeStyle: 'short'}, +// LLL : {year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric'}, + LLLL : {dateStyle: 'full', timeStyle: 'short'}, +// LLLL : {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric'}, 'd M': {day: '2-digit', month: 'short'} }, phpFormats = { @@ -31,11 +39,15 @@ y: {year: '2-digit'}, // Time A: {hour12: true}, - G: {hour: 'numeric'}, - H: {hour: '2-digit'}, +// A: {hourCycle: 'h12'}, // h11, h12, h23, h24 + g: {hour: 'numeric', hourCycle:'h11'}, + G: {hour: 'numeric', hourCycle:'h23'}, + h: {hour: '2-digit', hourCycle:'h11'}, + H: {hour: '2-digit', hourCycle:'h23'}, i: {minute: '2-digit'}, s: {second: '2-digit'}, - u: {fractionalSecondDigits: 3}, + u: {fractionalSecondDigits: 6}, + v: {fractionalSecondDigits: 3}, Z: {timeZone: 'UTC'} }, relativeTime = { @@ -45,7 +57,7 @@ // Format momentjs/PHP date formats to Intl.DateTimeFormat // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat - Date.prototype.format = function (options, UTC) { + Date.prototype.format = function (options, UTC, hourCycle) { if (typeof options == 'string') { if ('Y-m-d\\TH:i:s' == options) { return this.getFullYear() + '-' + pad2(1 + this.getMonth()) + '-' + pad2(this.getDate()) @@ -58,12 +70,15 @@ console.log('Date.format('+s+')'); options = {}; while (i--) { - o = phpFormats[s[i]] || phpFormats[s[i].toUpperCase()]; + o = phpFormats[s[i]]; o && Object.entries(o).forEach(([k,v])=>options[k]=v); } formats[s] = options; } } + if (hourCycle) { + options.hourCycle = hourCycle; + } return new Intl.DateTimeFormat(doc.documentElement.lang, options).format(this); }; diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php index 435c036ff..7045eecab 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -778,6 +778,8 @@ class Actions if ($oConfig->Get('webmail', 'allow_languages_on_settings', true)) { $sLanguage = (string) $oSettings->GetConf('Language', $sLanguage); } + $aResult['hourCycle'] = $oSettings->GetConf('hourCycle', ''); + if (!$oSettings->GetConf('MessagesPerPage')) { $oSettings->SetConf('MessagesPerPage', $oSettings->GetConf('MPP', $aResult['MessagesPerPage'])); } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php index 5b4be94f1..8927c0d92 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php @@ -162,6 +162,7 @@ trait User { // $oSettings->SetConf('Language', $this->ValidateLanguage($oConfig->Get('webmail', 'language', 'en'))); } + $this->setSettingsFromParams($oSettings, 'hourCycle', 'string'); if ($this->GetCapa(Capa::THEMES)) { diff --git a/snappymail/v/0.0.0/app/localization/ar-SA/user.json b/snappymail/v/0.0.0/app/localization/ar-SA/user.json index c475bfff2..4c6207c08 100644 --- a/snappymail/v/0.0.0/app/localization/ar-SA/user.json +++ b/snappymail/v/0.0.0/app/localization/ar-SA/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "عام", "LANGUAGE": "اللغة", + "HOUR_FORMAT": "Hour format", "IDENTITY": "الهوية", "LAYOUT": "التصميم", "LAYOUT_NO_SPLIT": "بدون إنقسام", diff --git a/snappymail/v/0.0.0/app/localization/bg-BG/user.json b/snappymail/v/0.0.0/app/localization/bg-BG/user.json index e4fde44ee..24204993e 100644 --- a/snappymail/v/0.0.0/app/localization/bg-BG/user.json +++ b/snappymail/v/0.0.0/app/localization/bg-BG/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Общи", "LANGUAGE": "Език", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Идентичност", "LAYOUT": "Стил", "LAYOUT_NO_SPLIT": "Не разделяй", diff --git a/snappymail/v/0.0.0/app/localization/cs-CZ/user.json b/snappymail/v/0.0.0/app/localization/cs-CZ/user.json index 4dbc983c6..418a4e9ee 100644 --- a/snappymail/v/0.0.0/app/localization/cs-CZ/user.json +++ b/snappymail/v/0.0.0/app/localization/cs-CZ/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Všeobecné", "LANGUAGE": "Jazyk", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Uživatel", "LAYOUT": "Rozložení", "LAYOUT_NO_SPLIT": "Nerozdělovat", diff --git a/snappymail/v/0.0.0/app/localization/da-DK/user.json b/snappymail/v/0.0.0/app/localization/da-DK/user.json index 4188896ba..8be44ac0e 100644 --- a/snappymail/v/0.0.0/app/localization/da-DK/user.json +++ b/snappymail/v/0.0.0/app/localization/da-DK/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Generelt", "LANGUAGE": "Sprog", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identitet", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "Del ikke", diff --git a/snappymail/v/0.0.0/app/localization/de-DE/user.json b/snappymail/v/0.0.0/app/localization/de-DE/user.json index 0d0df500f..2444ccc31 100644 --- a/snappymail/v/0.0.0/app/localization/de-DE/user.json +++ b/snappymail/v/0.0.0/app/localization/de-DE/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Allgemein", "LANGUAGE": "Sprache", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identität", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "Keine Aufteilung", diff --git a/snappymail/v/0.0.0/app/localization/el-GR/user.json b/snappymail/v/0.0.0/app/localization/el-GR/user.json index f13a8fef9..cc1de36fe 100644 --- a/snappymail/v/0.0.0/app/localization/el-GR/user.json +++ b/snappymail/v/0.0.0/app/localization/el-GR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Γενικό", "LANGUAGE": "Γλώσσα", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Ταυτότητα", "LAYOUT": "Σχέδιο", "LAYOUT_NO_SPLIT": "Χωρίς χώρισμα", diff --git a/snappymail/v/0.0.0/app/localization/en-GB/user.json b/snappymail/v/0.0.0/app/localization/en-GB/user.json index e9c8c3cd1..4de63f6d7 100644 --- a/snappymail/v/0.0.0/app/localization/en-GB/user.json +++ b/snappymail/v/0.0.0/app/localization/en-GB/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "General", "LANGUAGE": "Language", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/en/user.json b/snappymail/v/0.0.0/app/localization/en/user.json index 97a8dc596..5204160a5 100644 --- a/snappymail/v/0.0.0/app/localization/en/user.json +++ b/snappymail/v/0.0.0/app/localization/en/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "General", "LANGUAGE": "Language", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/es-ES/user.json b/snappymail/v/0.0.0/app/localization/es-ES/user.json index 03eab2015..4fce05d0f 100644 --- a/snappymail/v/0.0.0/app/localization/es-ES/user.json +++ b/snappymail/v/0.0.0/app/localization/es-ES/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "General", "LANGUAGE": "Idioma", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identidad", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "Sin División", diff --git a/snappymail/v/0.0.0/app/localization/et-EE/user.json b/snappymail/v/0.0.0/app/localization/et-EE/user.json index 544fdd3b1..45d5bbdba 100644 --- a/snappymail/v/0.0.0/app/localization/et-EE/user.json +++ b/snappymail/v/0.0.0/app/localization/et-EE/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Üldine", "LANGUAGE": "Keel", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identiteet", "LAYOUT": "Vaade", "LAYOUT_NO_SPLIT": "Jaotuseta", diff --git a/snappymail/v/0.0.0/app/localization/eu/admin.json b/snappymail/v/0.0.0/app/localization/eu/admin.json index 696283b52..2737f643b 100644 --- a/snappymail/v/0.0.0/app/localization/eu/admin.json +++ b/snappymail/v/0.0.0/app/localization/eu/admin.json @@ -104,7 +104,7 @@ "LABEL_ALL_RIGHTS_RESERVED": "Eskubide guztiak gordeak.", "HINT_READ_CHANGE_LOG": "Mesedez irakurri aldaketen informea eguneratu aurretik.", "HINT_IS_UP_TO_DATE": "SnappyMail eguneratuta dago.", - "HTML_NEW_VERSION": "<b>%VERSION%</b> bertsio berria eskuragarri.", + "HTML_NEW_VERSION": "<b>%VERSION%<\/b> bertsio berria eskuragarri.", "LABEL_UPDATING": "Eguneratzen", "LABEL_CHECKING": "Eguneraketak dauden begiratzen", "BUTTON_RELEASES": "Bertsioak" diff --git a/snappymail/v/0.0.0/app/localization/eu/user.json b/snappymail/v/0.0.0/app/localization/eu/user.json index 46c0c7e66..7cfaf7a33 100644 --- a/snappymail/v/0.0.0/app/localization/eu/user.json +++ b/snappymail/v/0.0.0/app/localization/eu/user.json @@ -259,7 +259,7 @@ "POPUPS_CLEAR_FOLDER": { "TITLE_CLEAR_FOLDER": "Ezabatu karpetako mezu guztiak?", "DANGER_DESC_WARNING": "Kontuz!", - "DANGER_DESC_HTML_1": "Ekintza honen bidez <strong>%FOLDER%</strong> karpetako mezu guztiak ezabatuko dira.", + "DANGER_DESC_HTML_1": "Ekintza honen bidez <strong>%FOLDER%<\/strong> karpetako mezu guztiak ezabatuko dira.", "DANGER_DESC_HTML_2": "Behin hasita, ekintza hau ezin da gelditu edo utzi.", "TITLE_CLEARING_PROCESS": "Karpeta garbitzen..." }, @@ -333,7 +333,7 @@ "TITLE_SYSTEM_FOLDERS": "Aukeratu sistemaren karpetak", "SELECT_CHOOSE_ONE": "Aukeratu bat", "SELECT_UNUSE_NAME": "Ez erabili", - "NOTIFICATION_SENT": "Ez duzu sistemako \"Bidalitakoak\" karpeta hautatu mezuak bidali ondoren bertan ipintzeko.\nBidalitako mezua gorde nahi ez baduzu hautatu \"Ez erabili\" aukera.\n", + "NOTIFICATION_SENT": "Ez duzu sistemako \"Bidalitakoak\" karpeta hautatu mezuak bidali ondoren bertan ipintzeko.\nBidalitako mezua gorde nahi ez baduzu hautatu \"Ez erabili\" aukera.\n", "NOTIFICATION_DRAFTS": "Ez duzu sistemako \"Zirriborroak\" karpeta hautatu mezuak editatu bitartean gordetzeko.", "NOTIFICATION_SPAM": "Ez duzu sistemako \"Zabor-posta\" karpeta hautatu zabor-mezuak kokatzeko.\nMezu hauek betirako ezabatu nahi badituzu, aukeratu \"Ez erabili\" aukera.\n", "NOTIFICATION_TRASH": "Ez duzu sistemako \"Zakarrontzia\" karpeta hautatu zabor-mezuak kokatzeko.\nMezu hauek betirako ezabatu nahi badituzu, aukeratu \"Ez erabili\" aukera.\n", @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Orokorra", "LANGUAGE": "Hizkuntza", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Nortasuna", "LAYOUT": "Diseinua", "LAYOUT_NO_SPLIT": "Zatitu gabe", diff --git a/snappymail/v/0.0.0/app/localization/fa-IR/user.json b/snappymail/v/0.0.0/app/localization/fa-IR/user.json index e4f8f09c3..4418f5219 100644 --- a/snappymail/v/0.0.0/app/localization/fa-IR/user.json +++ b/snappymail/v/0.0.0/app/localization/fa-IR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "عمومی", "LANGUAGE": "زبان", + "HOUR_FORMAT": "Hour format", "IDENTITY": "شناسه", "LAYOUT": "لایه", "LAYOUT_NO_SPLIT": "بدون تقسیم", diff --git a/snappymail/v/0.0.0/app/localization/fi-FI/user.json b/snappymail/v/0.0.0/app/localization/fi-FI/user.json index 92150c335..f508c14c4 100644 --- a/snappymail/v/0.0.0/app/localization/fi-FI/user.json +++ b/snappymail/v/0.0.0/app/localization/fi-FI/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Yleiset", "LANGUAGE": "Kieli", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identiteetti", "LAYOUT": "Asettelu", "LAYOUT_NO_SPLIT": "Ei jakoa", diff --git a/snappymail/v/0.0.0/app/localization/fr-FR/user.json b/snappymail/v/0.0.0/app/localization/fr-FR/user.json index df31762ba..b7e4cb8c1 100644 --- a/snappymail/v/0.0.0/app/localization/fr-FR/user.json +++ b/snappymail/v/0.0.0/app/localization/fr-FR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Général", "LANGUAGE": "Langue", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identité", "LAYOUT": "Disposition", "LAYOUT_NO_SPLIT": "Pas de séparation", diff --git a/snappymail/v/0.0.0/app/localization/hu-HU/user.json b/snappymail/v/0.0.0/app/localization/hu-HU/user.json index c1d4085e3..3146a1395 100644 --- a/snappymail/v/0.0.0/app/localization/hu-HU/user.json +++ b/snappymail/v/0.0.0/app/localization/hu-HU/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Általános", "LANGUAGE": "Nyelv", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identitás", "LAYOUT": "Elrendezés", "LAYOUT_NO_SPLIT": "Felosztás nélkül", diff --git a/snappymail/v/0.0.0/app/localization/id-ID/user.json b/snappymail/v/0.0.0/app/localization/id-ID/user.json index 27751d2a6..2953d2d98 100644 --- a/snappymail/v/0.0.0/app/localization/id-ID/user.json +++ b/snappymail/v/0.0.0/app/localization/id-ID/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Umum", "LANGUAGE": "Bahasa", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identitas", "LAYOUT": "Tampilan", "LAYOUT_NO_SPLIT": "Tanpa pemisah", diff --git a/snappymail/v/0.0.0/app/localization/is-IS/user.json b/snappymail/v/0.0.0/app/localization/is-IS/user.json index 89d3f163a..908cf49f9 100644 --- a/snappymail/v/0.0.0/app/localization/is-IS/user.json +++ b/snappymail/v/0.0.0/app/localization/is-IS/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Almennt", "LANGUAGE": "Tungumál", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Auðkenni", "LAYOUT": "Framsetning", "LAYOUT_NO_SPLIT": "Ekki klofið", diff --git a/snappymail/v/0.0.0/app/localization/it-IT/user.json b/snappymail/v/0.0.0/app/localization/it-IT/user.json index 0130c254f..79139a52a 100644 --- a/snappymail/v/0.0.0/app/localization/it-IT/user.json +++ b/snappymail/v/0.0.0/app/localization/it-IT/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Generali", "LANGUAGE": "Lingua", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identità", "LAYOUT": "Struttura", "LAYOUT_NO_SPLIT": "A pagina intera", diff --git a/snappymail/v/0.0.0/app/localization/ja-JP/user.json b/snappymail/v/0.0.0/app/localization/ja-JP/user.json index d5d161c88..fe8404084 100644 --- a/snappymail/v/0.0.0/app/localization/ja-JP/user.json +++ b/snappymail/v/0.0.0/app/localization/ja-JP/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "全般", "LANGUAGE": "言語", + "HOUR_FORMAT": "Hour format", "IDENTITY": "表示名", "LAYOUT": "レイアウト", "LAYOUT_NO_SPLIT": "分割しない", diff --git a/snappymail/v/0.0.0/app/localization/ko-KR/user.json b/snappymail/v/0.0.0/app/localization/ko-KR/user.json index 39f8d2e61..0b78939ac 100644 --- a/snappymail/v/0.0.0/app/localization/ko-KR/user.json +++ b/snappymail/v/0.0.0/app/localization/ko-KR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "일반", "LANGUAGE": "언어", + "HOUR_FORMAT": "Hour format", "IDENTITY": "신원", "LAYOUT": "레이아웃", "LAYOUT_NO_SPLIT": "분할 해제", diff --git a/snappymail/v/0.0.0/app/localization/lt-LT/user.json b/snappymail/v/0.0.0/app/localization/lt-LT/user.json index ce340eb26..dcc52886a 100644 --- a/snappymail/v/0.0.0/app/localization/lt-LT/user.json +++ b/snappymail/v/0.0.0/app/localization/lt-LT/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Pagrindiniai", "LANGUAGE": "Kalba", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Tapatybė", "LAYOUT": "Išdėstymas", "LAYOUT_NO_SPLIT": "Skaidymo nėra", diff --git a/snappymail/v/0.0.0/app/localization/lv-LV/user.json b/snappymail/v/0.0.0/app/localization/lv-LV/user.json index 6a8d5d474..d50658157 100644 --- a/snappymail/v/0.0.0/app/localization/lv-LV/user.json +++ b/snappymail/v/0.0.0/app/localization/lv-LV/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Vispārējie", "LANGUAGE": "Valoda", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/nb-NO/user.json b/snappymail/v/0.0.0/app/localization/nb-NO/user.json index f1302a641..485713a3a 100644 --- a/snappymail/v/0.0.0/app/localization/nb-NO/user.json +++ b/snappymail/v/0.0.0/app/localization/nb-NO/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Generelt", "LANGUAGE": "Språk", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identitet", "LAYOUT": "Utforming", "LAYOUT_NO_SPLIT": "Ingen deling", diff --git a/snappymail/v/0.0.0/app/localization/nl-NL/user.json b/snappymail/v/0.0.0/app/localization/nl-NL/user.json index 43f7c32e0..b24fd7c75 100644 --- a/snappymail/v/0.0.0/app/localization/nl-NL/user.json +++ b/snappymail/v/0.0.0/app/localization/nl-NL/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Algemeen", "LANGUAGE": "Taal", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identiteit", "LAYOUT": "Indeling", "LAYOUT_NO_SPLIT": "Geen splitsing", diff --git a/snappymail/v/0.0.0/app/localization/pl-PL/user.json b/snappymail/v/0.0.0/app/localization/pl-PL/user.json index e34938f38..96aa3f033 100644 --- a/snappymail/v/0.0.0/app/localization/pl-PL/user.json +++ b/snappymail/v/0.0.0/app/localization/pl-PL/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Ogólne", "LANGUAGE": "Język", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Tożsamość", "LAYOUT": "Układ", "LAYOUT_NO_SPLIT": "bez podziału", diff --git a/snappymail/v/0.0.0/app/localization/pt-BR/user.json b/snappymail/v/0.0.0/app/localization/pt-BR/user.json index d1fc7823d..f33bcc2a2 100644 --- a/snappymail/v/0.0.0/app/localization/pt-BR/user.json +++ b/snappymail/v/0.0.0/app/localization/pt-BR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Geral", "LANGUAGE": "Idioma", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identidade", "LAYOUT": "Painel de Leitura", "LAYOUT_NO_SPLIT": "Sem divisão", diff --git a/snappymail/v/0.0.0/app/localization/pt-PT/user.json b/snappymail/v/0.0.0/app/localization/pt-PT/user.json index 73c6c95b9..4eb87c563 100644 --- a/snappymail/v/0.0.0/app/localization/pt-PT/user.json +++ b/snappymail/v/0.0.0/app/localization/pt-PT/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Geral", "LANGUAGE": "Idioma", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identidade", "LAYOUT": "Apresentação", "LAYOUT_NO_SPLIT": "Sem separação", diff --git a/snappymail/v/0.0.0/app/localization/pt/user.json b/snappymail/v/0.0.0/app/localization/pt/user.json index 73c6c95b9..4eb87c563 100644 --- a/snappymail/v/0.0.0/app/localization/pt/user.json +++ b/snappymail/v/0.0.0/app/localization/pt/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Geral", "LANGUAGE": "Idioma", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identidade", "LAYOUT": "Apresentação", "LAYOUT_NO_SPLIT": "Sem separação", diff --git a/snappymail/v/0.0.0/app/localization/ro-RO/user.json b/snappymail/v/0.0.0/app/localization/ro-RO/user.json index ec18726bc..7c590e303 100644 --- a/snappymail/v/0.0.0/app/localization/ro-RO/user.json +++ b/snappymail/v/0.0.0/app/localization/ro-RO/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Setări de bază", "LANGUAGE": "Limbă", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/ru-RU/user.json b/snappymail/v/0.0.0/app/localization/ru-RU/user.json index 9522c2674..7eb8540e7 100644 --- a/snappymail/v/0.0.0/app/localization/ru-RU/user.json +++ b/snappymail/v/0.0.0/app/localization/ru-RU/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Основные Настройки", "LANGUAGE": "Язык", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Профиль", "LAYOUT": "Разметка", "LAYOUT_NO_SPLIT": "Одна панель", diff --git a/snappymail/v/0.0.0/app/localization/sk-SK/user.json b/snappymail/v/0.0.0/app/localization/sk-SK/user.json index 178fa7c1a..231aa8191 100644 --- a/snappymail/v/0.0.0/app/localization/sk-SK/user.json +++ b/snappymail/v/0.0.0/app/localization/sk-SK/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Všeobecné", "LANGUAGE": "Jazyk", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/sl-SI/user.json b/snappymail/v/0.0.0/app/localization/sl-SI/user.json index 7c8746ca7..5fd3fc187 100644 --- a/snappymail/v/0.0.0/app/localization/sl-SI/user.json +++ b/snappymail/v/0.0.0/app/localization/sl-SI/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Splošno", "LANGUAGE": "Jezik", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identiteta", "LAYOUT": "Postavitev", "LAYOUT_NO_SPLIT": "Brez razdelitve", diff --git a/snappymail/v/0.0.0/app/localization/sv-SE/user.json b/snappymail/v/0.0.0/app/localization/sv-SE/user.json index 6fb1a1717..87d9d76a0 100644 --- a/snappymail/v/0.0.0/app/localization/sv-SE/user.json +++ b/snappymail/v/0.0.0/app/localization/sv-SE/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Allmänt", "LANGUAGE": "Språk", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identitet", "LAYOUT": "Stil", "LAYOUT_NO_SPLIT": "Utan delad vy", diff --git a/snappymail/v/0.0.0/app/localization/tr-TR/user.json b/snappymail/v/0.0.0/app/localization/tr-TR/user.json index e67350a55..6877fddc2 100644 --- a/snappymail/v/0.0.0/app/localization/tr-TR/user.json +++ b/snappymail/v/0.0.0/app/localization/tr-TR/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Genel", "LANGUAGE": "Dil", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/uk-UA/user.json b/snappymail/v/0.0.0/app/localization/uk-UA/user.json index 18a1db642..ef3109cee 100644 --- a/snappymail/v/0.0.0/app/localization/uk-UA/user.json +++ b/snappymail/v/0.0.0/app/localization/uk-UA/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Основні налаштування", "LANGUAGE": "Мова", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/localization/vi-VN/user.json b/snappymail/v/0.0.0/app/localization/vi-VN/user.json index a48a9666d..4357b5327 100644 --- a/snappymail/v/0.0.0/app/localization/vi-VN/user.json +++ b/snappymail/v/0.0.0/app/localization/vi-VN/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "Tổng quan", "LANGUAGE": "Ngôn ngữ", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Tên gọi", "LAYOUT": "Bố cục", "LAYOUT_NO_SPLIT": "Không phân màn hình", diff --git a/snappymail/v/0.0.0/app/localization/zh-CN/user.json b/snappymail/v/0.0.0/app/localization/zh-CN/user.json index 42f64fb81..fca3ea71e 100644 --- a/snappymail/v/0.0.0/app/localization/zh-CN/user.json +++ b/snappymail/v/0.0.0/app/localization/zh-CN/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "常规", "LANGUAGE": "语言", + "HOUR_FORMAT": "Hour format", "IDENTITY": "身份", "LAYOUT": "布局", "LAYOUT_NO_SPLIT": "不分隔", diff --git a/snappymail/v/0.0.0/app/localization/zh-TW/user.json b/snappymail/v/0.0.0/app/localization/zh-TW/user.json index cbd23c4b4..01e449c33 100644 --- a/snappymail/v/0.0.0/app/localization/zh-TW/user.json +++ b/snappymail/v/0.0.0/app/localization/zh-TW/user.json @@ -387,6 +387,7 @@ "SETTINGS_GENERAL": { "LEGEND_GENERAL": "一般設置", "LANGUAGE": "語言", + "HOUR_FORMAT": "Hour format", "IDENTITY": "Identity", "LAYOUT": "Layout", "LAYOUT_NO_SPLIT": "No Split", diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsGeneral.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsGeneral.html index e80b2e0b9..bf8c86c94 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsGeneral.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsGeneral.html @@ -11,6 +11,18 @@ <span data-bind="saveTrigger: languageTrigger"></span> </div> </div> + <div class="control-group"> + <label data-i18n="SETTINGS_GENERAL/HOUR_FORMAT"></label> + <div> + <select data-bind="value: hourCycle"> + <option value="">default</option> + <option value="h11">00:00 AM</option> + <option value="h12">12:00 AM</option> + <option value="h23">00:00 (24 hour)</option> + <option value="h24">24:00 (24 hour)</option> + </select> + </div> + </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/LAYOUT"></label> <div data-bind="component: {