mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-14 22:55:12 +10:00
Localize Score, fix login dialog overflow, use locale-aware date format in channel chat
This commit is contained in:
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2142,5 +2142,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
@@ -784,6 +784,7 @@
|
||||
}
|
||||
},
|
||||
"chat_successes": "successes",
|
||||
"chat_score": "Score",
|
||||
"chat_removePath": "Remove path",
|
||||
"chat_noPathHistoryYet": "No path history yet.\nSend a message to discover paths.",
|
||||
"chat_pathActions": "Path Actions:",
|
||||
|
||||
+2
-1
@@ -2142,5 +2142,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2152,5 +2152,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2152,5 +2152,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2152,5 +2152,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
@@ -2686,6 +2686,12 @@ abstract class AppLocalizations {
|
||||
/// **'successes'**
|
||||
String get chat_successes;
|
||||
|
||||
/// No description provided for @chat_score.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Score'**
|
||||
String get chat_score;
|
||||
|
||||
/// No description provided for @chat_removePath.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -1473,6 +1473,9 @@ class AppLocalizationsBg extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Успехи';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Премахни пътя';
|
||||
|
||||
|
||||
@@ -1472,6 +1472,9 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Erfolgreich';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Pfad entfernen';
|
||||
|
||||
|
||||
@@ -1445,6 +1445,9 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'successes';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Remove path';
|
||||
|
||||
|
||||
@@ -1470,6 +1470,9 @@ class AppLocalizationsEs extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Éxitos';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Eliminar ruta';
|
||||
|
||||
|
||||
@@ -1477,6 +1477,9 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Succès';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Supprimer le chemin';
|
||||
|
||||
|
||||
@@ -1482,6 +1482,9 @@ class AppLocalizationsHu extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'sikerek';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Törölje a elérési útvonalat';
|
||||
|
||||
|
||||
@@ -1471,6 +1471,9 @@ class AppLocalizationsIt extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'successi';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Rimuovi percorso';
|
||||
|
||||
|
||||
@@ -1409,6 +1409,9 @@ class AppLocalizationsJa extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => '成功事例';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'パスを削除する';
|
||||
|
||||
|
||||
@@ -1405,6 +1405,9 @@ class AppLocalizationsKo extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => '성공 사례';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => '경로 제거';
|
||||
|
||||
|
||||
@@ -1459,6 +1459,9 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Succesvol';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Pad verwijderen';
|
||||
|
||||
|
||||
@@ -1483,6 +1483,9 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Sukcesy';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Usuń ścieżkę';
|
||||
|
||||
|
||||
@@ -1470,6 +1470,9 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Sucessos';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Remover caminho';
|
||||
|
||||
|
||||
@@ -1473,6 +1473,9 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'успешно';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Удалить маршрут';
|
||||
|
||||
|
||||
@@ -1460,6 +1460,9 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Úspechy';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Odstrániť cestu';
|
||||
|
||||
|
||||
@@ -1457,6 +1457,9 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Uspešni';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Izbriši pot';
|
||||
|
||||
|
||||
@@ -1452,6 +1452,9 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'framgångar';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Ta bort sökväg';
|
||||
|
||||
|
||||
@@ -1468,6 +1468,9 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => 'Успішно';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Оцінка';
|
||||
|
||||
@override
|
||||
String get chat_removePath => 'Видалити шлях';
|
||||
|
||||
|
||||
@@ -1385,6 +1385,9 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
@override
|
||||
String get chat_successes => '成功';
|
||||
|
||||
@override
|
||||
String get chat_score => 'Score';
|
||||
|
||||
@override
|
||||
String get chat_removePath => '移除路径';
|
||||
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2152,5 +2152,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -1354,5 +1354,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -2114,5 +2114,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
+2
-1
@@ -564,6 +564,7 @@
|
||||
}
|
||||
},
|
||||
"chat_successes": "Успішно",
|
||||
"chat_score": "Оцінка",
|
||||
"chat_removePath": "Видалити шлях",
|
||||
"chat_noPathHistoryYet": "Історія шляхів недоступна.\nНадішліть повідомлення, щоб виявити шляхи.",
|
||||
"chat_pathActions": "Дії зі шляхом:",
|
||||
@@ -827,7 +828,7 @@
|
||||
"login_roomDescription": "Введіть пароль кімнати для доступу до налаштувань та статусу.",
|
||||
"login_routing": "Маршрутизація",
|
||||
"login_routingMode": "Режим маршрутизації",
|
||||
"login_autoUseSavedPath": "Авто (використовувати збережений шлях)",
|
||||
"login_autoUseSavedPath": "Авто (збережений шлях)",
|
||||
"login_forceFloodMode": "Примусово через всю мережу",
|
||||
"login_managePaths": "Керувати шляхами",
|
||||
"login_login": "Вхід",
|
||||
|
||||
+2
-1
@@ -2119,5 +2119,6 @@
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}"
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score"
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:math' as math;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@@ -578,7 +579,7 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(
|
||||
_formatTime(message.timestamp),
|
||||
_formatTime(context, message.timestamp),
|
||||
style: TextStyle(
|
||||
fontSize: 11,
|
||||
color: Colors.grey[600],
|
||||
@@ -1227,14 +1228,16 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
||||
);
|
||||
}
|
||||
|
||||
String _formatTime(DateTime time) {
|
||||
String _formatTime(BuildContext context, DateTime time) {
|
||||
final now = DateTime.now();
|
||||
final diff = now.difference(time);
|
||||
final locale = Localizations.localeOf(context).toString();
|
||||
final hm = DateFormat.Hm(locale).format(time);
|
||||
|
||||
if (diff.inDays > 0) {
|
||||
return '${time.day}/${time.month} ${time.hour}:${time.minute.toString().padLeft(2, '0')}';
|
||||
return '${DateFormat.Md(locale).format(time)} $hm';
|
||||
} else {
|
||||
return '${time.hour}:${time.minute.toString().padLeft(2, '0')}';
|
||||
return hm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -303,7 +303,7 @@ class _PathManagementDialogState extends State<_PathManagementDialog> {
|
||||
),
|
||||
isThreeLine: true,
|
||||
subtitle: Text(
|
||||
'${(path.tripTimeMs / 1000).toStringAsFixed(2)}s • ${_formatRelativeTime(context, path.timestamp)}\n${path.successCount} ${l10n.chat_successes} • Score: ${path.routeWeight.toStringAsFixed(1)}',
|
||||
'${(path.tripTimeMs / 1000).toStringAsFixed(2)}s • ${_formatRelativeTime(context, path.timestamp)}\n${path.successCount} ${l10n.chat_successes} • ${l10n.chat_score}: ${path.routeWeight.toStringAsFixed(1)}',
|
||||
style: const TextStyle(fontSize: 11),
|
||||
),
|
||||
trailing: Row(
|
||||
|
||||
Reference in New Issue
Block a user