Skip to content

Commit 97b7ff4

Browse files
committed
i18n: Use translation for "(unknown users)"
1 parent c02d947 commit 97b7ff4

File tree

5 files changed

+21
-7
lines changed

5 files changed

+21
-7
lines changed

lib/widgets/emoji_reaction.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
23

34
import '../api/exception.dart';
45
import '../api/model/model.dart';
@@ -149,6 +150,7 @@ class ReactionChip extends StatelessWidget {
149150
@override
150151
Widget build(BuildContext context) {
151152
final store = PerAccountStoreWidget.of(context);
153+
final zulipLocalizations = ZulipLocalizations.of(context);
152154

153155
final reactionType = reactionWithVotes.reactionType;
154156
final emojiCode = reactionWithVotes.emojiCode;
@@ -163,7 +165,7 @@ class ReactionChip extends StatelessWidget {
163165
? userIds.map((id) {
164166
return id == store.selfUserId
165167
? 'You'
166-
: store.users[id]?.fullName ?? '(unknown user)'; // TODO(i18n)
168+
: store.users[id]?.fullName ?? zulipLocalizations.unknownUserName;
167169
}).join(', ')
168170
: userIds.length.toString();
169171

lib/widgets/inbox.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
23

34
import '../api/model/model.dart';
45
import '../model/narrow.dart';
@@ -360,18 +361,21 @@ class _DmItem extends StatelessWidget {
360361
@override
361362
Widget build(BuildContext context) {
362363
final store = PerAccountStoreWidget.of(context);
364+
final zulipLocalizations = ZulipLocalizations.of(context);
363365
final selfUser = store.users[store.selfUserId]!;
364366

365367
final designVariables = DesignVariables.of(context);
366368

367369
final title = switch (narrow.otherRecipientIds) { // TODO dedupe with [RecentDmConversationsItem]
368370
[] => selfUser.fullName,
369-
[var otherUserId] => store.users[otherUserId]?.fullName ?? '(unknown user)',
371+
[var otherUserId] => store.users[otherUserId]?.fullName ?? zulipLocalizations.unknownUserName,
370372

371373
// TODO(i18n): List formatting, like you can do in JavaScript:
372374
// new Intl.ListFormat('ja').format(['Chris', 'Greg', 'Alya', 'Shu'])
373375
// // 'Chris、Greg、Alya、Shu'
374-
_ => narrow.otherRecipientIds.map((id) => store.users[id]?.fullName ?? '(unknown user)').join(', '),
376+
_ => narrow.otherRecipientIds.map((id) =>
377+
store.users[id]?.fullName ?? zulipLocalizations.unknownUserName
378+
).join(', '),
375379
};
376380

377381
return Material(

lib/widgets/message_list.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:math';
33
import 'package:collection/collection.dart';
44
import 'package:flutter/material.dart';
55
import 'package:flutter_color_models/flutter_color_models.dart';
6+
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
67
import 'package:intl/intl.dart';
78

89
import '../api/model/model.dart';
@@ -316,6 +317,7 @@ class MessageListAppBarTitle extends StatelessWidget {
316317

317318
Widget _buildStreamRow(BuildContext context, {
318319
ZulipStream? stream,
320+
required String text,
319321
}) {
320322
// A null [Icon.icon] makes a blank space.
321323
final icon = stream != null ? iconDataForStream(stream) : null;
@@ -422,7 +424,8 @@ class MessageListAppBarTitle extends StatelessWidget {
422424
if (otherRecipientIds.isEmpty) {
423425
return const Text("DMs with yourself");
424426
} else {
425-
final names = otherRecipientIds.map((id) => store.users[id]?.fullName ?? '(unknown user)');
427+
final names = otherRecipientIds.map((id) =>
428+
store.users[id]?.fullName ?? zulipLocalizations.unknownUserName);
426429
return Text("DMs with ${names.join(", ")}"); // TODO show avatars
427430
}
428431
}
@@ -1049,6 +1052,7 @@ class StreamMessageRecipientHeader extends StatelessWidget {
10491052
streamWidget = const SizedBox(width: 16);
10501053
} else {
10511054
final stream = store.streams[message.streamId];
1055+
// TODO(i18n): provide translations for 'unknown channel'
10521056
final streamName = stream?.name
10531057
?? message.displayRecipient
10541058
?? '(unknown channel)'; // TODO(log)

lib/widgets/profile.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,9 @@ class _UserWidget extends StatelessWidget {
290290
@override
291291
Widget build(BuildContext context) {
292292
final store = PerAccountStoreWidget.of(context);
293+
final zulipLocalizations = ZulipLocalizations.of(context);
293294
final user = store.users[userId];
294-
final fullName = user?.fullName ?? '(unknown user)';
295+
final fullName = user?.fullName ?? zulipLocalizations.unknownUserName;
295296
return InkWell(
296297
onTap: () => Navigator.push(context,
297298
ProfilePage.buildRoute(context: context,

lib/widgets/recent_dm_conversations.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class RecentDmConversationsItem extends StatelessWidget {
8080
Widget build(BuildContext context) {
8181
final store = PerAccountStoreWidget.of(context);
8282
final selfUser = store.users[store.selfUserId]!;
83+
final zulipLocalizations = ZulipLocalizations.of(context);
8384

8485
final designVariables = DesignVariables.of(context);
8586

@@ -94,13 +95,15 @@ class RecentDmConversationsItem extends StatelessWidget {
9495
// (should we offer a "spam folder" style summary screen of recent
9596
// 1:1 DM conversations from muted users?)
9697
final otherUser = store.users[otherUserId];
97-
title = otherUser?.fullName ?? '(unknown user)';
98+
title = otherUser?.fullName ?? zulipLocalizations.unknownUserName;
9899
avatar = AvatarImage(userId: otherUserId, size: _avatarSize);
99100
default:
100101
// TODO(i18n): List formatting, like you can do in JavaScript:
101102
// new Intl.ListFormat('ja').format(['Chris', 'Greg', 'Alya'])
102103
// // 'Chris、Greg、Alya'
103-
title = narrow.otherRecipientIds.map((id) => store.users[id]?.fullName ?? '(unknown user)').join(', ');
104+
title = narrow.otherRecipientIds.map((id) =>
105+
store.users[id]?.fullName ?? zulipLocalizations.unknownUserName
106+
).join(', ');
104107
avatar = ColoredBox(color: designVariables.groupDmConversationIconBg,
105108
child: Center(
106109
child: Icon(color: designVariables.groupDmConversationIcon,

0 commit comments

Comments
 (0)