From 622e3e0bc9293543e3282815595b2afee76dda4c Mon Sep 17 00:00:00 2001 From: Krasimir Kazakov Date: Tue, 14 Apr 2026 07:03:51 +0300 Subject: [PATCH] added timestamping on a message in chats and channels --- lib/l10n/app_bg.arb | 20 +++++++ lib/l10n/app_de.arb | 20 +++++++ lib/l10n/app_en.arb | 26 ++++++++++ lib/l10n/app_es.arb | 20 +++++++ lib/l10n/app_fr.arb | 20 +++++++ lib/l10n/app_hu.arb | 20 +++++++ lib/l10n/app_it.arb | 20 +++++++ lib/l10n/app_ja.arb | 20 +++++++ lib/l10n/app_ko.arb | 20 +++++++ lib/l10n/app_localizations.dart | 78 ++++++++++++++++++++++++++++ lib/l10n/app_localizations_bg.dart | 41 +++++++++++++++ lib/l10n/app_localizations_de.dart | 41 +++++++++++++++ lib/l10n/app_localizations_en.dart | 41 +++++++++++++++ lib/l10n/app_localizations_es.dart | 41 +++++++++++++++ lib/l10n/app_localizations_fr.dart | 41 +++++++++++++++ lib/l10n/app_localizations_hu.dart | 41 +++++++++++++++ lib/l10n/app_localizations_it.dart | 41 +++++++++++++++ lib/l10n/app_localizations_ja.dart | 41 +++++++++++++++ lib/l10n/app_localizations_ko.dart | 41 +++++++++++++++ lib/l10n/app_localizations_nl.dart | 41 +++++++++++++++ lib/l10n/app_localizations_pl.dart | 41 +++++++++++++++ lib/l10n/app_localizations_pt.dart | 41 +++++++++++++++ lib/l10n/app_localizations_ru.dart | 41 +++++++++++++++ lib/l10n/app_localizations_sk.dart | 41 +++++++++++++++ lib/l10n/app_localizations_sl.dart | 41 +++++++++++++++ lib/l10n/app_localizations_sv.dart | 41 +++++++++++++++ lib/l10n/app_localizations_uk.dart | 41 +++++++++++++++ lib/l10n/app_localizations_zh.dart | 41 +++++++++++++++ lib/l10n/app_nl.arb | 20 +++++++ lib/l10n/app_pl.arb | 20 +++++++ lib/l10n/app_pt.arb | 20 +++++++ lib/l10n/app_ru.arb | 20 +++++++ lib/l10n/app_sk.arb | 20 +++++++ lib/l10n/app_sl.arb | 20 +++++++ lib/l10n/app_sv.arb | 20 +++++++ lib/l10n/app_uk.arb | 20 +++++++ lib/l10n/app_zh.arb | 20 +++++++ lib/screens/channel_chat_screen.dart | 42 +++++++++++++++ lib/screens/chat_screen.dart | 39 ++++++++++++++ 39 files changed, 1263 insertions(+) diff --git a/lib/l10n/app_bg.arb b/lib/l10n/app_bg.arb index 13e9de7..86356ad 100644 --- a/lib/l10n/app_bg.arb +++ b/lib/l10n/app_bg.arb @@ -804,6 +804,26 @@ "time_months": "месеци", "time_minutes": "минути", "time_allTime": "Всичко време", + "month_jan": "яну", + "month_feb": "фев", + "month_mar": "мар", + "month_apr": "апр", + "month_may": "май", + "month_jun": "юни", + "month_jul": "юли", + "month_aug": "авг", + "month_sep": "сеп", + "month_oct": "окт", + "month_nov": "ное", + "month_dec": "дек", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Прекъсни", "dialog_disconnectConfirm": "Сигурни ли сте, че искате да се откъснете от това устройство?", "login_repeaterLogin": "Повторител Вход", diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 62badce..379eef8 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -804,6 +804,26 @@ "time_months": "Monate", "time_minutes": "Minuten", "time_allTime": "Ganzer Zeitraum", + "month_jan": "Jan", + "month_feb": "Feb", + "month_mar": "Mär", + "month_apr": "Apr", + "month_may": "Mai", + "month_jun": "Jun", + "month_jul": "Jul", + "month_aug": "Aug", + "month_sep": "Sep", + "month_oct": "Okt", + "month_nov": "Nov", + "month_dec": "Dez", + "message_timestampWithDate": "{day}. {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Trennen", "dialog_disconnectConfirm": "Sind Sie sicher, dass Sie sich von diesem Gerät trennen möchten?", "login_repeaterLogin": "Beim Repeater anmelden", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0617553..6d12d9f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1017,6 +1017,32 @@ "time_months": "months", "time_minutes": "minutes", "time_allTime": "All Time", + "month_jan": "Jan", + "month_feb": "Feb", + "month_mar": "Mar", + "month_apr": "Apr", + "month_may": "May", + "month_jun": "Jun", + "month_jul": "Jul", + "month_aug": "Aug", + "month_sep": "Sep", + "month_oct": "Oct", + "month_nov": "Nov", + "month_dec": "Dec", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { + "type": "int" + }, + "month": { + "type": "String" + }, + "time": { + "type": "String" + } + } + }, "dialog_disconnect": "Disconnect", "dialog_disconnectConfirm": "Are you sure you want to disconnect from this device?", "login_repeaterLogin": "Repeater Login", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 4d465bb..96ca1ca 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -804,6 +804,26 @@ "time_months": "meses", "time_minutes": "minutos", "time_allTime": "Todas las veces", + "month_jan": "ene", + "month_feb": "feb", + "month_mar": "mar", + "month_apr": "abr", + "month_may": "may", + "month_jun": "jun", + "month_jul": "jul", + "month_aug": "ago", + "month_sep": "sep", + "month_oct": "oct", + "month_nov": "nov", + "month_dec": "dic", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Desconectar", "dialog_disconnectConfirm": "¿Está seguro de que desea desconectarse de este dispositivo?", "login_repeaterLogin": "Iniciar sesión en el Repetidor", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 16e1d3d..775442e 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -804,6 +804,26 @@ "time_months": "mois", "time_minutes": "minutes", "time_allTime": "Tout le temps", + "month_jan": "janv.", + "month_feb": "févr.", + "month_mar": "mars", + "month_apr": "avr.", + "month_may": "mai", + "month_jun": "juin", + "month_jul": "juil.", + "month_aug": "août", + "month_sep": "sept.", + "month_oct": "oct.", + "month_nov": "nov.", + "month_dec": "déc.", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Déconnecter", "dialog_disconnectConfirm": "Êtes-vous sûr de vouloir vous déconnecter de cet appareil ?", "login_repeaterLogin": "Connexion au répéteur", diff --git a/lib/l10n/app_hu.arb b/lib/l10n/app_hu.arb index cf42e1b..0cb0e8d 100644 --- a/lib/l10n/app_hu.arb +++ b/lib/l10n/app_hu.arb @@ -987,6 +987,26 @@ "time_months": "hónapok", "time_minutes": "percek", "time_allTime": "Bármely időpont", + "month_jan": "jan", + "month_feb": "feb", + "month_mar": "márc", + "month_apr": "ápr", + "month_may": "máj", + "month_jun": "jún", + "month_jul": "júl", + "month_aug": "aug", + "month_sep": "szept", + "month_oct": "okt", + "month_nov": "nov", + "month_dec": "dec", + "message_timestampWithDate": "{month} {day}. {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Csatlakozást megszakasztani", "dialog_disconnectConfirm": "Biztosan szeretné kiírni ezt a készüléket?", "login_repeaterLogin": "Ismételt bejelentkezés", diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index b9676bb..e585432 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -804,6 +804,26 @@ "time_months": "mesi", "time_minutes": "minuti", "time_allTime": "Tutto il Tempo", + "month_jan": "gen", + "month_feb": "feb", + "month_mar": "mar", + "month_apr": "apr", + "month_may": "mag", + "month_jun": "giu", + "month_jul": "lug", + "month_aug": "ago", + "month_sep": "set", + "month_oct": "ott", + "month_nov": "nov", + "month_dec": "dic", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Disconnetti", "dialog_disconnectConfirm": "Sei sicuro di voler disconnetterti da questo dispositivo?", "login_repeaterLogin": "Login Ripetitore", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 6a9c975..5e709d6 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -987,6 +987,26 @@ "time_months": "月", "time_minutes": "分", "time_allTime": "全期間", + "month_jan": "1月", + "month_feb": "2月", + "month_mar": "3月", + "month_apr": "4月", + "month_may": "5月", + "month_jun": "6月", + "month_jul": "7月", + "month_aug": "8月", + "month_sep": "9月", + "month_oct": "10月", + "month_nov": "11月", + "month_dec": "12月", + "message_timestampWithDate": "{month}{day}日 {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "切断する", "dialog_disconnectConfirm": "本当にこのデバイスとの接続を解除したいですか?", "login_repeaterLogin": "再ログイン", diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 2050e3b..19e8d10 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -987,6 +987,26 @@ "time_months": "개월", "time_minutes": "분", "time_allTime": "모든 시간", + "month_jan": "1월", + "month_feb": "2월", + "month_mar": "3월", + "month_apr": "4월", + "month_may": "5월", + "month_jun": "6월", + "month_jul": "7월", + "month_aug": "8월", + "month_sep": "9월", + "month_oct": "10월", + "month_nov": "11월", + "month_dec": "12월", + "message_timestampWithDate": "{month} {day}일, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "연결 해제", "dialog_disconnectConfirm": "이 장치와의 연결을 해제하시겠습니까?", "login_repeaterLogin": "다시 로그인", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index e2bd2f3..fd3dbaf 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -3381,6 +3381,84 @@ abstract class AppLocalizations { /// **'All Time'** String get time_allTime; + /// No description provided for @month_jan. + /// + /// In en, this message translates to: + /// **'Jan'** + String get month_jan; + + /// No description provided for @month_feb. + /// + /// In en, this message translates to: + /// **'Feb'** + String get month_feb; + + /// No description provided for @month_mar. + /// + /// In en, this message translates to: + /// **'Mar'** + String get month_mar; + + /// No description provided for @month_apr. + /// + /// In en, this message translates to: + /// **'Apr'** + String get month_apr; + + /// No description provided for @month_may. + /// + /// In en, this message translates to: + /// **'May'** + String get month_may; + + /// No description provided for @month_jun. + /// + /// In en, this message translates to: + /// **'Jun'** + String get month_jun; + + /// No description provided for @month_jul. + /// + /// In en, this message translates to: + /// **'Jul'** + String get month_jul; + + /// No description provided for @month_aug. + /// + /// In en, this message translates to: + /// **'Aug'** + String get month_aug; + + /// No description provided for @month_sep. + /// + /// In en, this message translates to: + /// **'Sep'** + String get month_sep; + + /// No description provided for @month_oct. + /// + /// In en, this message translates to: + /// **'Oct'** + String get month_oct; + + /// No description provided for @month_nov. + /// + /// In en, this message translates to: + /// **'Nov'** + String get month_nov; + + /// No description provided for @month_dec. + /// + /// In en, this message translates to: + /// **'Dec'** + String get month_dec; + + /// No description provided for @message_timestampWithDate. + /// + /// In en, this message translates to: + /// **'{day} {month}, {time}'** + String message_timestampWithDate(int day, String month, String time); + /// No description provided for @dialog_disconnect. /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index 283860e..712d5e5 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -1878,6 +1878,47 @@ class AppLocalizationsBg extends AppLocalizations { @override String get time_allTime => 'Всичко време'; + @override + String get month_jan => 'яну'; + + @override + String get month_feb => 'фев'; + + @override + String get month_mar => 'мар'; + + @override + String get month_apr => 'апр'; + + @override + String get month_may => 'май'; + + @override + String get month_jun => 'юни'; + + @override + String get month_jul => 'юли'; + + @override + String get month_aug => 'авг'; + + @override + String get month_sep => 'сеп'; + + @override + String get month_oct => 'окт'; + + @override + String get month_nov => 'ное'; + + @override + String get month_dec => 'дек'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Прекъсни'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index e29ae9e..73d7a75 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -1876,6 +1876,47 @@ class AppLocalizationsDe extends AppLocalizations { @override String get time_allTime => 'Ganzer Zeitraum'; + @override + String get month_jan => 'Jan'; + + @override + String get month_feb => 'Feb'; + + @override + String get month_mar => 'Mär'; + + @override + String get month_apr => 'Apr'; + + @override + String get month_may => 'Mai'; + + @override + String get month_jun => 'Jun'; + + @override + String get month_jul => 'Jul'; + + @override + String get month_aug => 'Aug'; + + @override + String get month_sep => 'Sep'; + + @override + String get month_oct => 'Okt'; + + @override + String get month_nov => 'Nov'; + + @override + String get month_dec => 'Dez'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day. $month, $time'; + } + @override String get dialog_disconnect => 'Trennen'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 877e11d..b0fb1a8 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -1840,6 +1840,47 @@ class AppLocalizationsEn extends AppLocalizations { @override String get time_allTime => 'All Time'; + @override + String get month_jan => 'Jan'; + + @override + String get month_feb => 'Feb'; + + @override + String get month_mar => 'Mar'; + + @override + String get month_apr => 'Apr'; + + @override + String get month_may => 'May'; + + @override + String get month_jun => 'Jun'; + + @override + String get month_jul => 'Jul'; + + @override + String get month_aug => 'Aug'; + + @override + String get month_sep => 'Sep'; + + @override + String get month_oct => 'Oct'; + + @override + String get month_nov => 'Nov'; + + @override + String get month_dec => 'Dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Disconnect'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index c963902..45e8efa 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -1874,6 +1874,47 @@ class AppLocalizationsEs extends AppLocalizations { @override String get time_allTime => 'Todas las veces'; + @override + String get month_jan => 'ene'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'abr'; + + @override + String get month_may => 'may'; + + @override + String get month_jun => 'jun'; + + @override + String get month_jul => 'jul'; + + @override + String get month_aug => 'ago'; + + @override + String get month_sep => 'sep'; + + @override + String get month_oct => 'oct'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dic'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Desconectar'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index eea88f5..81670dc 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -1885,6 +1885,47 @@ class AppLocalizationsFr extends AppLocalizations { @override String get time_allTime => 'Tout le temps'; + @override + String get month_jan => 'janv.'; + + @override + String get month_feb => 'févr.'; + + @override + String get month_mar => 'mars'; + + @override + String get month_apr => 'avr.'; + + @override + String get month_may => 'mai'; + + @override + String get month_jun => 'juin'; + + @override + String get month_jul => 'juil.'; + + @override + String get month_aug => 'août'; + + @override + String get month_sep => 'sept.'; + + @override + String get month_oct => 'oct.'; + + @override + String get month_nov => 'nov.'; + + @override + String get month_dec => 'déc.'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Déconnecter'; diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 5e36e94..994692a 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -1887,6 +1887,47 @@ class AppLocalizationsHu extends AppLocalizations { @override String get time_allTime => 'Bármely időpont'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'márc'; + + @override + String get month_apr => 'ápr'; + + @override + String get month_may => 'máj'; + + @override + String get month_jun => 'jún'; + + @override + String get month_jul => 'júl'; + + @override + String get month_aug => 'aug'; + + @override + String get month_sep => 'szept'; + + @override + String get month_oct => 'okt'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$month $day. $time'; + } + @override String get dialog_disconnect => 'Csatlakozást megszakasztani'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index bb9e0d2..57bb80a 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -1875,6 +1875,47 @@ class AppLocalizationsIt extends AppLocalizations { @override String get time_allTime => 'Tutto il Tempo'; + @override + String get month_jan => 'gen'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'apr'; + + @override + String get month_may => 'mag'; + + @override + String get month_jun => 'giu'; + + @override + String get month_jul => 'lug'; + + @override + String get month_aug => 'ago'; + + @override + String get month_sep => 'set'; + + @override + String get month_oct => 'ott'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dic'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Disconnetti'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 5151ab8..7ff142f 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -1798,6 +1798,47 @@ class AppLocalizationsJa extends AppLocalizations { @override String get time_allTime => '全期間'; + @override + String get month_jan => '1月'; + + @override + String get month_feb => '2月'; + + @override + String get month_mar => '3月'; + + @override + String get month_apr => '4月'; + + @override + String get month_may => '5月'; + + @override + String get month_jun => '6月'; + + @override + String get month_jul => '7月'; + + @override + String get month_aug => '8月'; + + @override + String get month_sep => '9月'; + + @override + String get month_oct => '10月'; + + @override + String get month_nov => '11月'; + + @override + String get month_dec => '12月'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$month$day日 $time'; + } + @override String get dialog_disconnect => '切断する'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index be64545..27ee7fe 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -1794,6 +1794,47 @@ class AppLocalizationsKo extends AppLocalizations { @override String get time_allTime => '모든 시간'; + @override + String get month_jan => '1월'; + + @override + String get month_feb => '2월'; + + @override + String get month_mar => '3월'; + + @override + String get month_apr => '4월'; + + @override + String get month_may => '5월'; + + @override + String get month_jun => '6월'; + + @override + String get month_jul => '7월'; + + @override + String get month_aug => '8월'; + + @override + String get month_sep => '9월'; + + @override + String get month_oct => '10월'; + + @override + String get month_nov => '11월'; + + @override + String get month_dec => '12월'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$month $day일, $time'; + } + @override String get dialog_disconnect => '연결 해제'; diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 86809df..9708a40 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -1863,6 +1863,47 @@ class AppLocalizationsNl extends AppLocalizations { @override String get time_allTime => 'Alle tijd'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mrt'; + + @override + String get month_apr => 'apr'; + + @override + String get month_may => 'mei'; + + @override + String get month_jun => 'jun'; + + @override + String get month_jul => 'jul'; + + @override + String get month_aug => 'aug'; + + @override + String get month_sep => 'sep'; + + @override + String get month_oct => 'okt'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Verbinden verbreken'; diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index 8952815..fe8ba4b 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -1888,6 +1888,47 @@ class AppLocalizationsPl extends AppLocalizations { @override String get time_allTime => 'Cały czas'; + @override + String get month_jan => 'sty'; + + @override + String get month_feb => 'lut'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'kwi'; + + @override + String get month_may => 'maj'; + + @override + String get month_jun => 'cze'; + + @override + String get month_jul => 'lip'; + + @override + String get month_aug => 'sie'; + + @override + String get month_sep => 'wrz'; + + @override + String get month_oct => 'paź'; + + @override + String get month_nov => 'lis'; + + @override + String get month_dec => 'gru'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Odłącz'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 43dc27a..cfedaeb 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -1874,6 +1874,47 @@ class AppLocalizationsPt extends AppLocalizations { @override String get time_allTime => 'Todos os tempos'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'fev'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'abr'; + + @override + String get month_may => 'mai'; + + @override + String get month_jun => 'jun'; + + @override + String get month_jul => 'jul'; + + @override + String get month_aug => 'ago'; + + @override + String get month_sep => 'set'; + + @override + String get month_oct => 'out'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dez'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day de $month, $time'; + } + @override String get dialog_disconnect => 'Desconectar'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 703d80d..28bd2c0 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -1877,6 +1877,47 @@ class AppLocalizationsRu extends AppLocalizations { @override String get time_allTime => 'Всё время'; + @override + String get month_jan => 'янв'; + + @override + String get month_feb => 'фев'; + + @override + String get month_mar => 'мар'; + + @override + String get month_apr => 'апр'; + + @override + String get month_may => 'мая'; + + @override + String get month_jun => 'июн'; + + @override + String get month_jul => 'июл'; + + @override + String get month_aug => 'авг'; + + @override + String get month_sep => 'сен'; + + @override + String get month_oct => 'окт'; + + @override + String get month_nov => 'ноя'; + + @override + String get month_dec => 'дек'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Отключиться'; diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index 980657d..0846baa 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -1862,6 +1862,47 @@ class AppLocalizationsSk extends AppLocalizations { @override String get time_allTime => 'Všetko Časom'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'apr'; + + @override + String get month_may => 'máj'; + + @override + String get month_jun => 'jún'; + + @override + String get month_jul => 'júl'; + + @override + String get month_aug => 'aug'; + + @override + String get month_sep => 'sep'; + + @override + String get month_oct => 'okt'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day. $month, $time'; + } + @override String get dialog_disconnect => 'Odpojiť'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index ad2a278..ad04f9b 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -1861,6 +1861,47 @@ class AppLocalizationsSl extends AppLocalizations { @override String get time_allTime => 'Vse časovno obdobje'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'apr'; + + @override + String get month_may => 'maj'; + + @override + String get month_jun => 'jun'; + + @override + String get month_jul => 'jul'; + + @override + String get month_aug => 'avg'; + + @override + String get month_sep => 'sep'; + + @override + String get month_oct => 'okt'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day. $month, $time'; + } + @override String get dialog_disconnect => 'Odklopiti'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index cc590c2..442cedd 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -1850,6 +1850,47 @@ class AppLocalizationsSv extends AppLocalizations { @override String get time_allTime => 'Alla tider'; + @override + String get month_jan => 'jan'; + + @override + String get month_feb => 'feb'; + + @override + String get month_mar => 'mar'; + + @override + String get month_apr => 'apr'; + + @override + String get month_may => 'maj'; + + @override + String get month_jun => 'jun'; + + @override + String get month_jul => 'jul'; + + @override + String get month_aug => 'aug'; + + @override + String get month_sep => 'sep'; + + @override + String get month_oct => 'okt'; + + @override + String get month_nov => 'nov'; + + @override + String get month_dec => 'dec'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Koppla från'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index dd7bf63..f785dae 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -1872,6 +1872,47 @@ class AppLocalizationsUk extends AppLocalizations { @override String get time_allTime => 'Весь час'; + @override + String get month_jan => 'січ'; + + @override + String get month_feb => 'лют'; + + @override + String get month_mar => 'бер'; + + @override + String get month_apr => 'квіт'; + + @override + String get month_may => 'трав'; + + @override + String get month_jun => 'черв'; + + @override + String get month_jul => 'лип'; + + @override + String get month_aug => 'серп'; + + @override + String get month_sep => 'вер'; + + @override + String get month_oct => 'жовт'; + + @override + String get month_nov => 'лист'; + + @override + String get month_dec => 'груд'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$day $month, $time'; + } + @override String get dialog_disconnect => 'Відключити'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index 8910dcd..0f2af3f 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -1766,6 +1766,47 @@ class AppLocalizationsZh extends AppLocalizations { @override String get time_allTime => '所有时间'; + @override + String get month_jan => '1月'; + + @override + String get month_feb => '2月'; + + @override + String get month_mar => '3月'; + + @override + String get month_apr => '4月'; + + @override + String get month_may => '5月'; + + @override + String get month_jun => '6月'; + + @override + String get month_jul => '7月'; + + @override + String get month_aug => '8月'; + + @override + String get month_sep => '9月'; + + @override + String get month_oct => '10月'; + + @override + String get month_nov => '11月'; + + @override + String get month_dec => '12月'; + + @override + String message_timestampWithDate(int day, String month, String time) { + return '$month$day日 $time'; + } + @override String get dialog_disconnect => '断开'; diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index cb1a11c..d98d6bb 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -804,6 +804,26 @@ "time_months": "maanden", "time_minutes": "minuten", "time_allTime": "Alle tijd", + "month_jan": "jan", + "month_feb": "feb", + "month_mar": "mrt", + "month_apr": "apr", + "month_may": "mei", + "month_jun": "jun", + "month_jul": "jul", + "month_aug": "aug", + "month_sep": "sep", + "month_oct": "okt", + "month_nov": "nov", + "month_dec": "dec", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Verbinden verbreken", "dialog_disconnectConfirm": "Ben je er zeker van dat je verbinding met dit apparaat wilt verbreken?", "login_repeaterLogin": "Inloggen Repeater", diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index aa3049f..acb7a07 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -814,6 +814,26 @@ "time_months": "miesiące", "time_minutes": "minuty", "time_allTime": "Cały czas", + "month_jan": "sty", + "month_feb": "lut", + "month_mar": "mar", + "month_apr": "kwi", + "month_may": "maj", + "month_jun": "cze", + "month_jul": "lip", + "month_aug": "sie", + "month_sep": "wrz", + "month_oct": "paź", + "month_nov": "lis", + "month_dec": "gru", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Odłącz", "dialog_disconnectConfirm": "Czy na pewno chcesz się odłączyć od tego urządzenia?", "login_repeaterLogin": "Logowanie do przekaźnika", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index c667cb0..e90186c 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -804,6 +804,26 @@ "time_months": "meses", "time_minutes": "minutos", "time_allTime": "Todos os tempos", + "month_jan": "jan", + "month_feb": "fev", + "month_mar": "mar", + "month_apr": "abr", + "month_may": "mai", + "month_jun": "jun", + "month_jul": "jul", + "month_aug": "ago", + "month_sep": "set", + "month_oct": "out", + "month_nov": "nov", + "month_dec": "dez", + "message_timestampWithDate": "{day} de {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Desconectar", "dialog_disconnectConfirm": "Tem certeza de que deseja desconectar deste dispositivo?", "login_repeaterLogin": "Login ao Repetidor", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 730cfc9..bd2f579 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -434,6 +434,26 @@ "time_months": "месяцев", "time_minutes": "минут", "time_allTime": "Всё время", + "month_jan": "янв", + "month_feb": "фев", + "month_mar": "мар", + "month_apr": "апр", + "month_may": "мая", + "month_jun": "июн", + "month_jul": "июл", + "month_aug": "авг", + "month_sep": "сен", + "month_oct": "окт", + "month_nov": "ноя", + "month_dec": "дек", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Отключиться", "dialog_disconnectConfirm": "Вы уверены, что хотите отключиться от этого устройства?", "login_repeaterLogin": "Вход в репитер", diff --git a/lib/l10n/app_sk.arb b/lib/l10n/app_sk.arb index cf99ca8..213f41c 100644 --- a/lib/l10n/app_sk.arb +++ b/lib/l10n/app_sk.arb @@ -804,6 +804,26 @@ "time_months": "mesiace", "time_minutes": "minúty", "time_allTime": "Všetko Časom", + "month_jan": "jan", + "month_feb": "feb", + "month_mar": "mar", + "month_apr": "apr", + "month_may": "máj", + "month_jun": "jún", + "month_jul": "júl", + "month_aug": "aug", + "month_sep": "sep", + "month_oct": "okt", + "month_nov": "nov", + "month_dec": "dec", + "message_timestampWithDate": "{day}. {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Odpojiť", "dialog_disconnectConfirm": "Ste si istý/á, že chcete odpojiť od tohto zariadenia?", "login_repeaterLogin": "Opätovné prihlásenie", diff --git a/lib/l10n/app_sl.arb b/lib/l10n/app_sl.arb index 0c29a86..f6c1076 100644 --- a/lib/l10n/app_sl.arb +++ b/lib/l10n/app_sl.arb @@ -804,6 +804,26 @@ "time_months": "mesi", "time_minutes": "minute", "time_allTime": "Vse časovno obdobje", + "month_jan": "jan", + "month_feb": "feb", + "month_mar": "mar", + "month_apr": "apr", + "month_may": "maj", + "month_jun": "jun", + "month_jul": "jul", + "month_aug": "avg", + "month_sep": "sep", + "month_oct": "okt", + "month_nov": "nov", + "month_dec": "dec", + "message_timestampWithDate": "{day}. {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Odklopiti", "dialog_disconnectConfirm": "Ste prepričani, da želite se odklopiti s tega naprave?", "login_repeaterLogin": "Ponovni vnos", diff --git a/lib/l10n/app_sv.arb b/lib/l10n/app_sv.arb index 3232888..0447410 100644 --- a/lib/l10n/app_sv.arb +++ b/lib/l10n/app_sv.arb @@ -804,6 +804,26 @@ "time_months": "månader", "time_minutes": "minuter", "time_allTime": "Alla tider", + "month_jan": "jan", + "month_feb": "feb", + "month_mar": "mar", + "month_apr": "apr", + "month_may": "maj", + "month_jun": "jun", + "month_jul": "jul", + "month_aug": "aug", + "month_sep": "sep", + "month_oct": "okt", + "month_nov": "nov", + "month_dec": "dec", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Koppla från", "dialog_disconnectConfirm": "Är du säker på att du vill koppla från enheten?", "login_repeaterLogin": "Återuppta Inloggning", diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index ddab576..f866293 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -805,6 +805,26 @@ "time_months": "місяців", "time_minutes": "хвилин", "time_allTime": "Весь час", + "month_jan": "січ", + "month_feb": "лют", + "month_mar": "бер", + "month_apr": "квіт", + "month_may": "трав", + "month_jun": "черв", + "month_jul": "лип", + "month_aug": "серп", + "month_sep": "вер", + "month_oct": "жовт", + "month_nov": "лист", + "month_dec": "груд", + "message_timestampWithDate": "{day} {month}, {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "Відключити", "dialog_disconnectConfirm": "Ви впевнені, що хочете відключитися від цього пристрою?", "login_repeaterLogin": "Вхід у ретранслятор", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 766be44..2355c44 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -831,6 +831,26 @@ "time_months": "月", "time_minutes": "分钟", "time_allTime": "所有时间", + "month_jan": "1月", + "month_feb": "2月", + "month_mar": "3月", + "month_apr": "4月", + "month_may": "5月", + "month_jun": "6月", + "month_jul": "7月", + "month_aug": "8月", + "month_sep": "9月", + "month_oct": "10月", + "month_nov": "11月", + "month_dec": "12月", + "message_timestampWithDate": "{month}{day}日 {time}", + "@message_timestampWithDate": { + "placeholders": { + "day": { "type": "int" }, + "month": { "type": "String" }, + "time": { "type": "String" } + } + }, "dialog_disconnect": "断开", "dialog_disconnectConfirm": "确定要断开与此设备的连接吗?", "login_repeaterLogin": "转发节点登录", diff --git a/lib/screens/channel_chat_screen.dart b/lib/screens/channel_chat_screen.dart index 7beaaf4..e44c09d 100644 --- a/lib/screens/channel_chat_screen.dart +++ b/lib/screens/channel_chat_screen.dart @@ -547,6 +547,19 @@ class _ChannelChatScreenState extends State { ], ], ), + if (gifId == null) ...[ + const SizedBox(height: 4), + Align( + alignment: Alignment.centerRight, + child: Text( + _formatTimestamp(message.timestamp), + style: TextStyle( + fontSize: 11, + color: Colors.grey[400], + ), + ), + ), + ], if (enableTracing) ...[ if (displayPath.isNotEmpty) ...[ const SizedBox(height: 4), @@ -1223,6 +1236,35 @@ class _ChannelChatScreenState extends State { } } + String _formatTimestamp(DateTime time) { + final l10n = context.l10n; + final now = DateTime.now(); + final today = DateTime(now.year, now.month, now.day); + final messageDate = DateTime(time.year, time.month, time.day); + final timeStr = '${time.hour}:${time.minute.toString().padLeft(2, '0')}'; + + if (messageDate == today) { + return timeStr; + } + + final monthNames = [ + l10n.month_jan, + l10n.month_feb, + l10n.month_mar, + l10n.month_apr, + l10n.month_may, + l10n.month_jun, + l10n.month_jul, + l10n.month_aug, + l10n.month_sep, + l10n.month_oct, + l10n.month_nov, + l10n.month_dec, + ]; + final monthName = monthNames[time.month - 1]; + return l10n.message_timestampWithDate(time.day, monthName, timeStr); + } + void _showMessagePathInfo(ChannelMessage message) { Navigator.push( context, diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index 8057f1f..c55971d 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -1751,6 +1751,16 @@ class _MessageBubble extends StatelessWidget { ], ], ), + if (gifId == null) ...[ + const SizedBox(height: 4), + Align( + alignment: Alignment.centerRight, + child: Text( + _formatTimestamp(context, message.timestamp), + style: TextStyle(fontSize: 10, color: metaColor), + ), + ), + ], if (enableTracing) ...[ if (isOutgoing && message.retryCount > 0) ...[ const SizedBox(height: 4), @@ -2056,6 +2066,35 @@ class _MessageBubble extends StatelessWidget { final minute = time.minute.toString().padLeft(2, '0'); return '$hour:$minute'; } + + String _formatTimestamp(BuildContext context, DateTime time) { + final l10n = context.l10n; + final now = DateTime.now(); + final today = DateTime(now.year, now.month, now.day); + final messageDate = DateTime(time.year, time.month, time.day); + final timeStr = '${time.hour}:${time.minute.toString().padLeft(2, '0')}'; + + if (messageDate == today) { + return timeStr; + } + + final monthNames = [ + l10n.month_jan, + l10n.month_feb, + l10n.month_mar, + l10n.month_apr, + l10n.month_may, + l10n.month_jun, + l10n.month_jul, + l10n.month_aug, + l10n.month_sep, + l10n.month_oct, + l10n.month_nov, + l10n.month_dec, + ]; + final monthName = monthNames[time.month - 1]; + return l10n.message_timestampWithDate(time.day, monthName, timeStr); + } } class _PoiInfo {