feat: Add more localization strings and add default matrix localizations

This commit is contained in:
Christian Pauly 2022-04-14 07:54:15 +02:00
parent a519176afc
commit 059a240214
6 changed files with 93 additions and 16 deletions

View File

@ -40,6 +40,7 @@ export 'src/utils/http_timeout.dart';
export 'src/utils/image_pack_extension.dart'; export 'src/utils/image_pack_extension.dart';
export 'src/utils/matrix_file.dart'; export 'src/utils/matrix_file.dart';
export 'src/utils/matrix_id_string_extension.dart'; export 'src/utils/matrix_id_string_extension.dart';
export 'src/utils/matrix_default_localizations.dart';
export 'src/utils/matrix_localizations.dart'; export 'src/utils/matrix_localizations.dart';
export 'src/utils/receipt.dart'; export 'src/utils/receipt.dart';
export 'src/utils/sync_update_extension.dart'; export 'src/utils/sync_update_extension.dart';

View File

@ -101,6 +101,9 @@ abstract class EventLocalizations {
}, },
EventTypes.RoomMember: (event, i18n, body) { EventTypes.RoomMember: (event, i18n, body) {
final targetName = event.stateKeyUser?.calcDisplayname() ?? ''; final targetName = event.stateKeyUser?.calcDisplayname() ?? '';
final senderName = event.sender.calcDisplayname();
final userIsTarget = event.stateKey == event.room.client.userID;
final userIsSender = event.senderId == event.room.client.userID;
// Fallback message if just nothing has changed: // Fallback message if just nothing has changed:
var text = i18n.joinedTheChat(targetName); var text = i18n.joinedTheChat(targetName);
@ -111,37 +114,59 @@ abstract class EventLocalizations {
if (newMembership != oldMembership) { if (newMembership != oldMembership) {
if (oldMembership == 'invite' && newMembership == 'join') { if (oldMembership == 'invite' && newMembership == 'join') {
text = i18n.acceptedTheInvitation(targetName); text = userIsTarget
? i18n.youAcceptedTheInvitation
: i18n.acceptedTheInvitation(targetName);
} else if (oldMembership == 'invite' && newMembership == 'leave') { } else if (oldMembership == 'invite' && newMembership == 'leave') {
if (event.stateKey == event.senderId) { if (event.stateKey == event.senderId) {
text = i18n.rejectedTheInvitation(targetName); text = userIsTarget
? i18n.youRejectedTheInvitation
: i18n.rejectedTheInvitation(targetName);
} else { } else {
text = i18n.hasWithdrawnTheInvitationFor( text = userIsSender
event.sender.calcDisplayname(), targetName); ? i18n.youHaveWithdrawnTheInvitationFor(targetName)
: i18n.hasWithdrawnTheInvitationFor(senderName, targetName);
} }
} else if (oldMembership == 'leave' && newMembership == 'join') { } else if (oldMembership == 'leave' && newMembership == 'join') {
text = i18n.joinedTheChat(targetName); text = userIsTarget
? i18n.youJoinedTheChat
: i18n.joinedTheChat(targetName);
} else if (oldMembership == 'join' && newMembership == 'ban') { } else if (oldMembership == 'join' && newMembership == 'ban') {
text = text = userIsSender
i18n.kickedAndBanned(event.sender.calcDisplayname(), targetName); ? i18n.youKickedAndBanned(targetName)
: i18n.kickedAndBanned(senderName, targetName);
} else if (oldMembership == 'join' && } else if (oldMembership == 'join' &&
newMembership == 'leave' && newMembership == 'leave' &&
event.stateKey != event.senderId) { event.stateKey != event.senderId) {
text = i18n.kicked(event.sender.calcDisplayname(), targetName); text = userIsSender
? i18n.youKicked(targetName)
: i18n.kicked(senderName, targetName);
} else if (oldMembership == 'join' && } else if (oldMembership == 'join' &&
newMembership == 'leave' && newMembership == 'leave' &&
event.stateKey == event.senderId) { event.stateKey == event.senderId) {
text = i18n.userLeftTheChat(targetName); text = i18n.userLeftTheChat(targetName);
} else if (oldMembership == 'invite' && newMembership == 'ban') { } else if (oldMembership == 'invite' && newMembership == 'ban') {
text = i18n.bannedUser(event.sender.calcDisplayname(), targetName); text = userIsSender
? i18n.youBannedUser(targetName)
: i18n.bannedUser(senderName, targetName);
} else if (oldMembership == 'leave' && newMembership == 'ban') { } else if (oldMembership == 'leave' && newMembership == 'ban') {
text = i18n.bannedUser(event.sender.calcDisplayname(), targetName); text = userIsSender
? i18n.youBannedUser(targetName)
: i18n.bannedUser(senderName, targetName);
} else if (oldMembership == 'ban' && newMembership == 'leave') { } else if (oldMembership == 'ban' && newMembership == 'leave') {
text = i18n.unbannedUser(event.sender.calcDisplayname(), targetName); text = userIsSender
? i18n.youUnbannedUser(targetName)
: i18n.unbannedUser(senderName, targetName);
} else if (newMembership == 'invite') { } else if (newMembership == 'invite') {
text = i18n.invitedUser(event.sender.calcDisplayname(), targetName); text = userIsSender
? i18n.youInvitedUser(targetName)
: userIsTarget
? i18n.youInvitedBy(senderName)
: i18n.invitedUser(senderName, targetName);
} else if (newMembership == 'join') { } else if (newMembership == 'join') {
text = i18n.joinedTheChat(targetName); text = userIsTarget
? i18n.youJoinedTheChat
: i18n.joinedTheChat(targetName);
} }
} else if (newMembership == 'join') { } else if (newMembership == 'join') {
final newAvatar = event.content.tryGet<String>('avatar_url') ?? ''; final newAvatar = event.content.tryGet<String>('avatar_url') ?? '';

View File

@ -230,4 +230,38 @@ class MatrixDefaultLocalizations extends MatrixLocalizations {
String sentReaction(String senderName, String reactionKey) { String sentReaction(String senderName, String reactionKey) {
return '$senderName reacted with $reactionKey'; return '$senderName reacted with $reactionKey';
} }
@override
// TODO: implement youAcceptedTheInvitation
String get youAcceptedTheInvitation => 'You accepted the invitation';
@override
String youBannedUser(String targetName) => 'You have banned $targetName';
@override
String youHaveWithdrawnTheInvitationFor(String targetName) =>
'You have withdrawn the invitation for $targetName';
@override
String youInvitedBy(String senderName) =>
'You have been invited by $senderName';
@override
String youInvitedUser(String targetName) => 'You invited $targetName';
@override
String get youJoinedTheChat => 'You joined the chat';
@override
String youKicked(String targetName) => 'You kicked $targetName';
@override
String youKickedAndBanned(String targetName) =>
'You kicked and banned $targetName';
@override
String get youRejectedTheInvitation => 'You have rejected the invitation';
@override
String youUnbannedUser(String targetName) => 'You unbanned $targetName';
} }

View File

@ -52,6 +52,26 @@ abstract class MatrixLocalizations {
String get roomHasBeenUpgraded; String get roomHasBeenUpgraded;
String get youAcceptedTheInvitation;
String get youRejectedTheInvitation;
String get youJoinedTheChat;
String youInvitedBy(String senderName);
String youInvitedUser(String targetName);
String youUnbannedUser(String targetName);
String youBannedUser(String targetName);
String youKicked(String targetName);
String youKickedAndBanned(String targetName);
String youHaveWithdrawnTheInvitationFor(String targetName);
String groupWith(String displayname); String groupWith(String displayname);
String removedBy(String calcDisplayname); String removedBy(String calcDisplayname);

View File

@ -26,7 +26,6 @@ import 'package:test/test.dart';
import 'fake_client.dart'; import 'fake_client.dart';
import 'fake_matrix_api.dart'; import 'fake_matrix_api.dart';
import 'matrix_default_localizations.dart';
void main() { void main() {
/// All Tests related to the Event /// All Tests related to the Event

View File

@ -18,8 +18,6 @@
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
import 'matrix_default_localizations.dart';
void main() { void main() {
/// All Tests related to device keys /// All Tests related to device keys
group('Matrix Localizations', () { group('Matrix Localizations', () {