From 5c23453e665ed8804b445b5f792dc6efc3e14f08 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 14 Jul 2024 16:49:46 +0200 Subject: [PATCH 001/106] feat: New spaces and chat list design --- assets/l10n/intl_en.arb | 13 + lib/config/app_config.dart | 1 - lib/config/routes.dart | 5 - lib/config/setting_keys.dart | 1 - lib/pages/chat_list/chat_list.dart | 531 +++++----- lib/pages/chat_list/chat_list_body.dart | 478 +++++---- lib/pages/chat_list/chat_list_header.dart | 194 ++-- lib/pages/chat_list/chat_list_item.dart | 176 ++-- lib/pages/chat_list/chat_list_view.dart | 206 +--- lib/pages/chat_list/space_view.dart | 918 ++++++++---------- lib/pages/chat_list/start_chat_fab.dart | 88 -- lib/pages/chat_list/utils/on_chat_tap.dart | 127 --- .../settings_style/settings_style_view.dart | 6 - lib/widgets/avatar.dart | 98 +- lib/widgets/layouts/two_column_layout.dart | 4 +- lib/widgets/matrix.dart | 4 - linux/my_application.cc | 2 +- 17 files changed, 1270 insertions(+), 1582 deletions(-) delete mode 100644 lib/pages/chat_list/start_chat_fab.dart delete mode 100644 lib/pages/chat_list/utils/on_chat_tap.dart diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index cfd26a7c4..ab0ba910d 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -196,6 +196,19 @@ "supportedVersions": {} } }, + "countChatsAndCountParticipants": "{chats} chats and {participants} participants", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "noMoreChatsFound": "No more chats found...", + "joinedChats": "Joined chats", + "unread": "Unread", + "space": "Space", + "spaces": "Spaces", "banFromChat": "Ban from chat", "@banFromChat": { "type": "text", diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 841d810ec..6ee20d337 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -44,7 +44,6 @@ abstract class AppConfig { static bool hideRedactedEvents = false; static bool hideUnknownEvents = true; static bool hideUnimportantStateEvents = true; - static bool separateChatTypes = false; static bool autoplayImages = true; static bool sendTypingNotifications = true; static bool sendPublicReadReceipts = true; diff --git a/lib/config/routes.dart b/lib/config/routes.dart index d11cd56db..4aaf63a0b 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -92,12 +92,8 @@ abstract class AppRoutes { FluffyThemes.isColumnMode(context) && state.fullPath?.startsWith('/rooms/settings') == false ? TwoColumnLayout( - displayNavigationRail: - state.path?.startsWith('/rooms/settings') != true, mainView: ChatList( activeChat: state.pathParameters['roomid'], - displayNavigationRail: - state.path?.startsWith('/rooms/settings') != true, ), sideView: child, ) @@ -175,7 +171,6 @@ abstract class AppRoutes { ? TwoColumnLayout( mainView: const Settings(), sideView: child, - displayNavigationRail: false, ) : child, ), diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 7c0e50df8..5b795b08e 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -4,7 +4,6 @@ abstract class SettingKeys { static const String hideUnknownEvents = 'chat.fluffy.hideUnknownEvents'; static const String hideUnimportantStateEvents = 'chat.fluffy.hideUnimportantStateEvents'; - static const String separateChatTypes = 'chat.fluffy.separateChatTypes'; static const String sentry = 'sentry'; static const String theme = 'theme'; static const String amoledEnabled = 'amoled_enabled'; diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 93f8d4ad2..9181b1dff 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -10,12 +10,13 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_shortcuts/flutter_shortcuts.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart' as sdk; import 'package:matrix/matrix.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:uni_links/uni_links.dart'; import 'package:fluffychat/config/app_config.dart'; -import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/chat/send_file_dialog.dart'; import 'package:fluffychat/pages/chat_list/chat_list_view.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; @@ -35,7 +36,6 @@ import 'package:fluffychat/utils/tor_stub.dart' enum SelectMode { normal, share, - select, } enum PopupMenuAction { @@ -49,19 +49,32 @@ enum PopupMenuAction { enum ActiveFilter { allChats, + unread, groups, - messages, spaces, } +extension LocalizedActiveFilter on ActiveFilter { + String toLocalizedString(BuildContext context) { + switch (this) { + case ActiveFilter.allChats: + return L10n.of(context)!.all; + case ActiveFilter.unread: + return L10n.of(context)!.unread; + case ActiveFilter.groups: + return L10n.of(context)!.groups; + case ActiveFilter.spaces: + return L10n.of(context)!.spaces; + } + } +} + class ChatList extends StatefulWidget { static BuildContext? contextForVoip; - final bool displayNavigationRail; final String? activeChat; const ChatList({ super.key, - this.displayNavigationRail = false, required this.activeChat, }); @@ -77,85 +90,240 @@ class ChatListController extends State StreamSubscription? _intentUriStreamSubscription; - bool get displayNavigationBar => - !FluffyThemes.isColumnMode(context) && - (spaces.isNotEmpty || AppConfig.separateChatTypes); - - String? activeSpaceId; - - void resetActiveSpaceId() { - setState(() { - selectedRoomIds.clear(); - activeSpaceId = null; - }); + void createNewSpace() { + context.push('/rooms/newspace'); } - void setActiveSpace(String? spaceId) { - setState(() { - selectedRoomIds.clear(); - activeSpaceId = spaceId; - activeFilter = ActiveFilter.spaces; - }); - } + ActiveFilter activeFilter = ActiveFilter.allChats; - void createNewSpace() async { - final spaceId = await context.push('/rooms/newspace'); - if (spaceId != null) { - setActiveSpace(spaceId); + String? _activeSpaceId; + String? get activeSpaceId => _activeSpaceId; + + void setActiveSpace(String spaceId) => setState(() { + _activeSpaceId = spaceId; + }); + void clearActiveSpace() => setState(() { + _activeSpaceId = null; + }); + + void addChatAction() async { + if (activeSpaceId == null) { + context.go('/rooms/newprivatechat'); + return; } - } - int get selectedIndex { - switch (activeFilter) { - case ActiveFilter.allChats: - case ActiveFilter.messages: - return 0; - case ActiveFilter.groups: - return 1; - case ActiveFilter.spaces: - return AppConfig.separateChatTypes ? 2 : 1; - } - } + final roomType = await showConfirmationDialog( + context: context, + title: L10n.of(context)!.addChatOrSubSpace, + actions: [ + AlertDialogAction( + key: AddRoomType.subspace, + label: L10n.of(context)!.createNewSpace, + ), + AlertDialogAction( + key: AddRoomType.chat, + label: L10n.of(context)!.createGroup, + ), + ], + ); + if (roomType == null) return; - ActiveFilter getActiveFilterByDestination(int? i) { - switch (i) { - case 1: - if (AppConfig.separateChatTypes) { - return ActiveFilter.groups; + final names = await showTextInputDialog( + context: context, + title: roomType == AddRoomType.subspace + ? L10n.of(context)!.createNewSpace + : L10n.of(context)!.createGroup, + textFields: [ + DialogTextField( + hintText: roomType == AddRoomType.subspace + ? L10n.of(context)!.spaceName + : L10n.of(context)!.groupName, + minLines: 1, + maxLines: 1, + maxLength: 64, + validator: (text) { + if (text == null || text.isEmpty) { + return L10n.of(context)!.pleaseChoose; + } + return null; + }, + ), + DialogTextField( + hintText: L10n.of(context)!.chatDescription, + minLines: 4, + maxLines: 8, + maxLength: 255, + ), + ], + okLabel: L10n.of(context)!.create, + cancelLabel: L10n.of(context)!.cancel, + ); + if (names == null) return; + final client = Matrix.of(context).client; + final result = await showFutureLoadingDialog( + context: context, + future: () async { + late final String roomId; + final activeSpace = client.getRoomById(activeSpaceId!)!; + await activeSpace.postLoad(); + + if (roomType == AddRoomType.subspace) { + roomId = await client.createSpace( + name: names.first, + topic: names.last.isEmpty ? null : names.last, + visibility: activeSpace.joinRules == JoinRules.public + ? sdk.Visibility.public + : sdk.Visibility.private, + ); + } else { + roomId = await client.createGroupChat( + groupName: names.first, + preset: activeSpace.joinRules == JoinRules.public + ? CreateRoomPreset.publicChat + : CreateRoomPreset.privateChat, + visibility: activeSpace.joinRules == JoinRules.public + ? sdk.Visibility.public + : sdk.Visibility.private, + initialState: names.length > 1 && names.last.isNotEmpty + ? [ + sdk.StateEvent( + type: sdk.EventTypes.RoomTopic, + content: {'topic': names.last}, + ), + ] + : null, + ); } - return ActiveFilter.spaces; - case 2: - return ActiveFilter.spaces; - case 0: - default: - if (AppConfig.separateChatTypes) { - return ActiveFilter.messages; - } - return ActiveFilter.allChats; + await activeSpace.setSpaceChild(roomId); + }, + ); + if (result.error != null) return; + } + + void onChatTap(Room room, BuildContext context) async { + if (room.isSpace) { + setActiveSpace(room.id); + return; + } + if (room.membership == Membership.invite) { + final inviterId = + room.getState(EventTypes.RoomMember, room.client.userID!)?.senderId; + final inviteAction = await showModalActionSheet( + context: context, + message: room.isDirectChat + ? L10n.of(context)!.invitePrivateChat + : L10n.of(context)!.inviteGroupChat, + title: room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), + actions: [ + SheetAction( + key: InviteActions.accept, + label: L10n.of(context)!.accept, + icon: Icons.check_outlined, + isDefaultAction: true, + ), + SheetAction( + key: InviteActions.decline, + label: L10n.of(context)!.decline, + icon: Icons.close_outlined, + isDestructiveAction: true, + ), + SheetAction( + key: InviteActions.block, + label: L10n.of(context)!.block, + icon: Icons.block_outlined, + isDestructiveAction: true, + ), + ], + ); + if (inviteAction == null) return; + if (inviteAction == InviteActions.block) { + context.go('/rooms/settings/security/ignorelist', extra: inviterId); + return; + } + if (inviteAction == InviteActions.decline) { + await showFutureLoadingDialog( + context: context, + future: room.leave, + ); + return; + } + final joinResult = await showFutureLoadingDialog( + context: context, + future: () async { + final waitForRoom = room.client.waitForRoomInSync( + room.id, + join: true, + ); + await room.join(); + await waitForRoom; + }, + ); + if (joinResult.error != null) return; } - } - void onDestinationSelected(int? i) { - setState(() { - selectedRoomIds.clear(); - activeFilter = getActiveFilterByDestination(i); - }); - } + if (room.membership == Membership.ban) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(L10n.of(context)!.youHaveBeenBannedFromThisChat), + ), + ); + return; + } - ActiveFilter activeFilter = AppConfig.separateChatTypes - ? ActiveFilter.messages - : ActiveFilter.allChats; + if (room.membership == Membership.leave) { + context.go('/rooms/archive/${room.id}'); + return; + } + + // Share content into this room + final shareContent = Matrix.of(context).shareContent; + if (shareContent != null) { + final shareFile = shareContent.tryGet('file'); + if (shareContent.tryGet('msgtype') == 'chat.fluffy.shared_file' && + shareFile != null) { + await showDialog( + context: context, + useRootNavigator: false, + builder: (c) => SendFileDialog( + files: [shareFile], + room: room, + ), + ); + Matrix.of(context).shareContent = null; + } else { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context)!.forward, + message: L10n.of(context)!.forwardMessageTo( + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), + ), + okLabel: L10n.of(context)!.forward, + cancelLabel: L10n.of(context)!.cancel, + ); + if (consent == OkCancelResult.cancel) { + Matrix.of(context).shareContent = null; + return; + } + if (consent == OkCancelResult.ok) { + room.sendEvent(shareContent); + Matrix.of(context).shareContent = null; + } + } + } + + context.go('/rooms/${room.id}'); + } bool Function(Room) getRoomFilterByActiveFilter(ActiveFilter activeFilter) { switch (activeFilter) { case ActiveFilter.allChats: - return (room) => !room.isSpace; + return (room) => true; case ActiveFilter.groups: return (room) => !room.isSpace && !room.isDirectChat; - case ActiveFilter.messages: - return (room) => !room.isSpace && room.isDirectChat; + case ActiveFilter.unread: + return (room) => room.isUnreadOrInvited; case ActiveFilter.spaces: - return (r) => r.isSpace; + return (room) => room.isSpace; } } @@ -331,15 +499,11 @@ class ChatListController extends State List get spaces => Matrix.of(context).client.rooms.where((r) => r.isSpace).toList(); - final selectedRoomIds = {}; - String? get activeChat => widget.activeChat; SelectMode get selectMode => Matrix.of(context).shareContent != null ? SelectMode.share - : selectedRoomIds.isEmpty - ? SelectMode.normal - : SelectMode.select; + : SelectMode.normal; void _processIncomingSharedFiles(List files) { if (files.isEmpty) return; @@ -448,80 +612,67 @@ class ChatListController extends State super.dispose(); } - void toggleSelection(String roomId) { - setState( - () => selectedRoomIds.contains(roomId) - ? selectedRoomIds.remove(roomId) - : selectedRoomIds.add(roomId), + void chatContextAction(Room room) async { + final action = await showModalActionSheet( + context: context, + title: room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), + actions: [ + SheetAction( + key: ChatContextAction.markUnread, + icon: room.markedUnread + ? Icons.mark_as_unread + : Icons.mark_as_unread_outlined, + label: room.markedUnread + ? L10n.of(context)!.markAsRead + : L10n.of(context)!.unread, + ), + SheetAction( + key: ChatContextAction.favorite, + icon: room.isFavourite ? Icons.pin : Icons.pin_outlined, + label: room.isFavourite + ? L10n.of(context)!.unpin + : L10n.of(context)!.pin, + ), + SheetAction( + key: ChatContextAction.mute, + icon: room.pushRuleState == PushRuleState.notify + ? Icons.notifications_off_outlined + : Icons.notifications, + label: room.pushRuleState == PushRuleState.notify + ? L10n.of(context)!.muteChat + : L10n.of(context)!.unmuteChat, + ), + SheetAction( + isDestructiveAction: true, + key: ChatContextAction.leave, + icon: Icons.delete_outlined, + label: L10n.of(context)!.leave, + ), + ], ); - } - Future toggleUnread() async { + if (action == null) return; + if (!mounted) return; + await showFutureLoadingDialog( context: context, - future: () async { - final markUnread = anySelectedRoomNotMarkedUnread; - final client = Matrix.of(context).client; - for (final roomId in selectedRoomIds) { - final room = client.getRoomById(roomId)!; - if (room.markedUnread == markUnread) continue; - await client.getRoomById(roomId)!.markUnread(markUnread); + future: () { + switch (action) { + case ChatContextAction.favorite: + return room.setFavourite(!room.isFavourite); + case ChatContextAction.markUnread: + return room.markUnread(!room.markedUnread); + case ChatContextAction.mute: + return room.setPushRuleState( + room.pushRuleState == PushRuleState.notify + ? PushRuleState.mentionsOnly + : PushRuleState.notify, + ); + case ChatContextAction.leave: + return room.leave(); } }, ); - cancelAction(); - } - - Future toggleFavouriteRoom() async { - await showFutureLoadingDialog( - context: context, - future: () async { - final makeFavorite = anySelectedRoomNotFavorite; - final client = Matrix.of(context).client; - for (final roomId in selectedRoomIds) { - final room = client.getRoomById(roomId)!; - if (room.isFavourite == makeFavorite) continue; - await client.getRoomById(roomId)!.setFavourite(makeFavorite); - } - }, - ); - cancelAction(); - } - - Future toggleMuted() async { - await showFutureLoadingDialog( - context: context, - future: () async { - final newState = anySelectedRoomNotMuted - ? PushRuleState.mentionsOnly - : PushRuleState.notify; - final client = Matrix.of(context).client; - for (final roomId in selectedRoomIds) { - final room = client.getRoomById(roomId)!; - if (room.pushRuleState == newState) continue; - await client.getRoomById(roomId)!.setPushRuleState(newState); - } - }, - ); - cancelAction(); - } - - Future archiveAction() async { - final confirmed = await showOkCancelAlertDialog( - useRootNavigator: false, - context: context, - title: L10n.of(context)!.areYouSure, - okLabel: L10n.of(context)!.yes, - cancelLabel: L10n.of(context)!.cancel, - message: L10n.of(context)!.archiveRoomDescription, - ) == - OkCancelResult.ok; - if (!confirmed) return; - await showFutureLoadingDialog( - context: context, - future: () => _archiveSelectedRooms(), - ); - setState(() {}); } void dismissStatusList() async { @@ -568,76 +719,6 @@ class ChatListController extends State ); } - Future _archiveSelectedRooms() async { - final client = Matrix.of(context).client; - while (selectedRoomIds.isNotEmpty) { - final roomId = selectedRoomIds.first; - try { - await client.getRoomById(roomId)!.leave(); - } finally { - toggleSelection(roomId); - } - } - } - - Future addToSpace() async { - final selectedSpace = await showConfirmationDialog( - context: context, - title: L10n.of(context)!.addToSpace, - message: L10n.of(context)!.addToSpaceDescription, - fullyCapitalizedForMaterial: false, - actions: Matrix.of(context) - .client - .rooms - .where((r) => r.isSpace) - .map( - (space) => AlertDialogAction( - key: space.id, - label: space - .getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), - ), - ) - .toList(), - ); - if (selectedSpace == null) return; - final result = await showFutureLoadingDialog( - context: context, - future: () async { - final space = Matrix.of(context).client.getRoomById(selectedSpace)!; - if (space.canSendDefaultStates) { - for (final roomId in selectedRoomIds) { - await space.setSpaceChild(roomId); - } - } - }, - ); - if (result.error == null) { - if (!mounted) return; - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(L10n.of(context)!.chatHasBeenAddedToThisSpace), - ), - ); - } - - setState(() => selectedRoomIds.clear()); - } - - bool get anySelectedRoomNotMarkedUnread => selectedRoomIds.any( - (roomId) => - !Matrix.of(context).client.getRoomById(roomId)!.markedUnread, - ); - - bool get anySelectedRoomNotFavorite => selectedRoomIds.any( - (roomId) => !Matrix.of(context).client.getRoomById(roomId)!.isFavourite, - ); - - bool get anySelectedRoomNotMuted => selectedRoomIds.any( - (roomId) => - Matrix.of(context).client.getRoomById(roomId)!.pushRuleState == - PushRuleState.notify, - ); - bool waitForFirstSync = false; Future _waitForFirstSync() async { @@ -666,19 +747,20 @@ class ChatListController extends State void cancelAction() { if (selectMode == SelectMode.share) { setState(() => Matrix.of(context).shareContent = null); - } else { - setState(() => selectedRoomIds.clear()); } } + void setActiveFilter(ActiveFilter filter) { + setState(() { + activeFilter = filter; + }); + } + void setActiveClient(Client client) { context.go('/rooms'); setState(() { - activeFilter = AppConfig.separateChatTypes - ? ActiveFilter.messages - : ActiveFilter.allChats; - activeSpaceId = null; - selectedRoomIds.clear(); + activeFilter = ActiveFilter.allChats; + _activeSpaceId = null; Matrix.of(context).setActiveClient(client); }); _clientStream.add(client); @@ -687,7 +769,7 @@ class ChatListController extends State void setActiveBundle(String bundle) { context.go('/rooms'); setState(() { - selectedRoomIds.clear(); + _activeSpaceId = null; Matrix.of(context).activeBundle = bundle; if (!Matrix.of(context) .currentBundle! @@ -780,3 +862,18 @@ class ChatListController extends State } enum EditBundleAction { addToBundle, removeFromBundle } + +enum InviteActions { + accept, + decline, + block, +} + +enum AddRoomType { chat, subspace } + +enum ChatContextAction { + favorite, + markUnread, + mute, + leave, +} diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index eeb6bb656..a6526989b 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -1,7 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:animations/animations.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:matrix/matrix.dart'; @@ -11,7 +10,6 @@ import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; import 'package:fluffychat/pages/chat_list/search_title.dart'; import 'package:fluffychat/pages/chat_list/space_view.dart'; import 'package:fluffychat/pages/chat_list/status_msg_list.dart'; -import 'package:fluffychat/pages/chat_list/utils/on_chat_tap.dart'; import 'package:fluffychat/pages/user_bottom_sheet/user_bottom_sheet.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/stream_extension.dart'; @@ -29,6 +27,17 @@ class ChatListViewBody extends StatelessWidget { @override Widget build(BuildContext context) { + final activeSpace = controller.activeSpaceId; + if (activeSpace != null) { + return SpaceView( + spaceId: activeSpace, + onBack: controller.clearActiveSpace, + onChatTab: (room) => controller.onChatTap(room, context), + onChatContext: (room) => controller.chatContextAction(room), + activeChat: controller.activeChat, + toParentSpace: controller.setActiveSpace, + ); + } final publicRooms = controller.roomSearchResult?.chunk .where((room) => room.roomType != 'm.space') .toList(); @@ -43,224 +52,281 @@ class ChatListViewBody extends StatelessWidget { final subtitleColor = Theme.of(context).textTheme.bodyLarge!.color!.withAlpha(50); final filter = controller.searchController.text.toLowerCase(); - return PageTransitionSwitcher( - transitionBuilder: ( - Widget child, - Animation primaryAnimation, - Animation secondaryAnimation, - ) { - return SharedAxisTransition( - animation: primaryAnimation, - secondaryAnimation: secondaryAnimation, - transitionType: SharedAxisTransitionType.vertical, - fillColor: Theme.of(context).scaffoldBackgroundColor, - child: child, - ); - }, - child: StreamBuilder( - key: ValueKey( - client.userID.toString() + - controller.activeFilter.toString() + - controller.activeSpaceId.toString(), - ), - stream: client.onSync.stream - .where((s) => s.hasRoomUpdate) - .rateLimit(const Duration(seconds: 1)), - builder: (context, _) { - if (controller.activeFilter == ActiveFilter.spaces) { - return SpaceView( - controller, - scrollController: controller.scrollController, - key: Key(controller.activeSpaceId ?? 'Spaces'), - ); + return StreamBuilder( + key: ValueKey( + client.userID.toString(), + ), + stream: client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, _) { + final rooms = controller.filteredRooms; + + final spaces = rooms.where((r) => r.isSpace); + final spaceDelegateCandidates = {}; + for (final space in spaces) { + spaceDelegateCandidates[space.id] = space; + for (final spaceChild in space.spaceChildren) { + final roomId = spaceChild.roomId; + if (roomId == null) continue; + spaceDelegateCandidates[roomId] = space; } - final rooms = controller.filteredRooms; - return SafeArea( - child: CustomScrollView( - controller: controller.scrollController, - slivers: [ - ChatListHeader(controller: controller), - SliverList( - delegate: SliverChildListDelegate( - [ - if (controller.isSearchMode) ...[ - SearchTitle( - title: L10n.of(context)!.publicRooms, - icon: const Icon(Icons.explore_outlined), + } + final spaceDelegates = {}; + + return SafeArea( + child: CustomScrollView( + controller: controller.scrollController, + slivers: [ + ChatListHeader(controller: controller), + SliverList( + delegate: SliverChildListDelegate( + [ + if (controller.isSearchMode) ...[ + SearchTitle( + title: L10n.of(context)!.publicRooms, + icon: const Icon(Icons.explore_outlined), + ), + PublicRoomsHorizontalList(publicRooms: publicRooms), + SearchTitle( + title: L10n.of(context)!.publicSpaces, + icon: const Icon(Icons.workspaces_outlined), + ), + PublicRoomsHorizontalList(publicRooms: publicSpaces), + SearchTitle( + title: L10n.of(context)!.users, + icon: const Icon(Icons.group_outlined), + ), + AnimatedContainer( + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + height: userSearchResult == null || + userSearchResult.results.isEmpty + ? 0 + : 106, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: userSearchResult == null + ? null + : ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: userSearchResult.results.length, + itemBuilder: (context, i) => _SearchItem( + title: + userSearchResult.results[i].displayName ?? + userSearchResult + .results[i].userId.localpart ?? + L10n.of(context)!.unknownDevice, + avatar: userSearchResult.results[i].avatarUrl, + onPressed: () => showAdaptiveBottomSheet( + context: context, + builder: (c) => UserBottomSheet( + profile: userSearchResult.results[i], + outerContext: context, + ), + ), + ), + ), + ), + ], + if (!controller.isSearchMode && AppConfig.showPresences) + GestureDetector( + onLongPress: () => controller.dismissStatusList(), + child: StatusMessageList( + onStatusEdit: controller.setStatus, ), - PublicRoomsHorizontalList(publicRooms: publicRooms), - SearchTitle( - title: L10n.of(context)!.publicSpaces, - icon: const Icon(Icons.workspaces_outlined), + ), + const ConnectionStatusHeader(), + AnimatedContainer( + height: controller.isTorBrowser ? 64 : 0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + child: Material( + color: Theme.of(context).colorScheme.surface, + child: ListTile( + leading: const Icon(Icons.vpn_key), + title: Text(L10n.of(context)!.dehydrateTor), + subtitle: Text(L10n.of(context)!.dehydrateTorLong), + trailing: const Icon(Icons.chevron_right_outlined), + onTap: controller.dehydrate, ), - PublicRoomsHorizontalList(publicRooms: publicSpaces), - SearchTitle( - title: L10n.of(context)!.users, - icon: const Icon(Icons.group_outlined), - ), - AnimatedContainer( - clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration(), - height: userSearchResult == null || - userSearchResult.results.isEmpty - ? 0 - : 106, - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - child: userSearchResult == null - ? null - : ListView.builder( - scrollDirection: Axis.horizontal, - itemCount: userSearchResult.results.length, - itemBuilder: (context, i) => _SearchItem( - title: userSearchResult - .results[i].displayName ?? - userSearchResult - .results[i].userId.localpart ?? - L10n.of(context)!.unknownDevice, - avatar: - userSearchResult.results[i].avatarUrl, - onPressed: () => showAdaptiveBottomSheet( - context: context, - builder: (c) => UserBottomSheet( - profile: userSearchResult.results[i], - outerContext: context, + ), + ), + if (client.rooms.isNotEmpty && !controller.isSearchMode) + SizedBox( + height: 44, + child: ListView( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 6, + ), + shrinkWrap: true, + scrollDirection: Axis.horizontal, + children: ActiveFilter.values + .map( + (filter) => Padding( + padding: + const EdgeInsets.symmetric(horizontal: 4), + child: InkWell( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + onTap: () => + controller.setActiveFilter(filter), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: filter == controller.activeFilter + ? Theme.of(context) + .colorScheme + .primary + : Theme.of(context) + .colorScheme + .secondaryContainer, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + alignment: Alignment.center, + child: Text( + filter.toLocalizedString(context), + style: TextStyle( + fontWeight: + filter == controller.activeFilter + ? FontWeight.bold + : FontWeight.normal, + color: + filter == controller.activeFilter + ? Theme.of(context) + .colorScheme + .onPrimary + : Theme.of(context) + .colorScheme + .onSecondaryContainer, + ), ), ), ), ), - ), - ], - if (!controller.isSearchMode && - controller.activeFilter != ActiveFilter.groups && - AppConfig.showPresences) - GestureDetector( - onLongPress: () => controller.dismissStatusList(), - child: StatusMessageList( - onStatusEdit: controller.setStatus, - ), - ), - const ConnectionStatusHeader(), - AnimatedContainer( - height: controller.isTorBrowser ? 64 : 0, - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration(), - child: Material( - color: Theme.of(context).colorScheme.surface, - child: ListTile( - leading: const Icon(Icons.vpn_key), - title: Text(L10n.of(context)!.dehydrateTor), - subtitle: Text(L10n.of(context)!.dehydrateTorLong), - trailing: const Icon(Icons.chevron_right_outlined), - onTap: controller.dehydrate, - ), + ) + .toList(), ), ), - if (controller.isSearchMode) - SearchTitle( - title: L10n.of(context)!.chats, - icon: const Icon(Icons.forum_outlined), + if (controller.isSearchMode) + SearchTitle( + title: L10n.of(context)!.chats, + icon: const Icon(Icons.forum_outlined), + ), + if (client.prevBatch != null && + rooms.isEmpty && + !controller.isSearchMode) ...[ + Padding( + padding: const EdgeInsets.all(32.0), + child: Icon( + CupertinoIcons.chat_bubble_2, + size: 128, + color: Theme.of(context).colorScheme.secondary, ), - if (client.prevBatch != null && - rooms.isEmpty && - !controller.isSearchMode) ...[ - Padding( - padding: const EdgeInsets.all(32.0), - child: Icon( - CupertinoIcons.chat_bubble_2, - size: 128, - color: - Theme.of(context).colorScheme.onInverseSurface, + ), + ], + ], + ), + ), + if (client.prevBatch == null) + SliverList( + delegate: SliverChildBuilderDelegate( + (context, i) => Opacity( + opacity: (dummyChatCount - i) / dummyChatCount, + child: ListTile( + leading: CircleAvatar( + backgroundColor: titleColor, + child: CircularProgressIndicator( + strokeWidth: 1, + color: Theme.of(context).textTheme.bodyLarge!.color, ), ), - ], - ], + title: Row( + children: [ + Expanded( + child: Container( + height: 14, + decoration: BoxDecoration( + color: titleColor, + borderRadius: BorderRadius.circular(3), + ), + ), + ), + const SizedBox(width: 36), + Container( + height: 14, + width: 14, + decoration: BoxDecoration( + color: subtitleColor, + borderRadius: BorderRadius.circular(14), + ), + ), + const SizedBox(width: 12), + Container( + height: 14, + width: 14, + decoration: BoxDecoration( + color: subtitleColor, + borderRadius: BorderRadius.circular(14), + ), + ), + ], + ), + subtitle: Container( + decoration: BoxDecoration( + color: subtitleColor, + borderRadius: BorderRadius.circular(3), + ), + height: 12, + margin: const EdgeInsets.only(right: 22), + ), + ), + ), + childCount: dummyChatCount, ), ), - if (client.prevBatch == null) - SliverList( - delegate: SliverChildBuilderDelegate( - (context, i) => Opacity( - opacity: (dummyChatCount - i) / dummyChatCount, - child: ListTile( - leading: CircleAvatar( - backgroundColor: titleColor, - child: CircularProgressIndicator( - strokeWidth: 1, - color: - Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - title: Row( - children: [ - Expanded( - child: Container( - height: 14, - decoration: BoxDecoration( - color: titleColor, - borderRadius: BorderRadius.circular(3), - ), - ), - ), - const SizedBox(width: 36), - Container( - height: 14, - width: 14, - decoration: BoxDecoration( - color: subtitleColor, - borderRadius: BorderRadius.circular(14), - ), - ), - const SizedBox(width: 12), - Container( - height: 14, - width: 14, - decoration: BoxDecoration( - color: subtitleColor, - borderRadius: BorderRadius.circular(14), - ), - ), - ], - ), - subtitle: Container( - decoration: BoxDecoration( - color: subtitleColor, - borderRadius: BorderRadius.circular(3), - ), - height: 12, - margin: const EdgeInsets.only(right: 22), - ), - ), - ), - childCount: dummyChatCount, - ), - ), - if (client.prevBatch != null) - SliverList.builder( - itemCount: rooms.length, - itemBuilder: (BuildContext context, int i) { - return ChatListItem( - rooms[i], - key: Key('chat_list_item_${rooms[i].id}'), - filter: filter, - selected: - controller.selectedRoomIds.contains(rooms[i].id), - onTap: controller.selectMode == SelectMode.select - ? () => controller.toggleSelection(rooms[i].id) - : () => onChatTap(rooms[i], context), - onLongPress: () => - controller.toggleSelection(rooms[i].id), - activeChat: controller.activeChat == rooms[i].id, - ); - }, - ), - ], - ), - ); - }, - ), + if (client.prevBatch != null) + SliverList.builder( + itemCount: rooms.length, + itemBuilder: (BuildContext context, int i) { + var room = rooms[i]; + if (controller.activeFilter != ActiveFilter.groups) { + final parent = room.isSpace + ? room + : spaceDelegateCandidates[room.id]; + if (parent != null) { + if (spaceDelegates.contains(parent.id)) { + return const SizedBox.shrink(); + } + spaceDelegates.add(parent.id); + room = parent; + } + } + + return ChatListItem( + room, + lastEventRoom: rooms[i], + key: Key('chat_list_item_${room.id}'), + filter: filter, + onTap: () => controller.onChatTap(room, context), + onLongPress: () => controller.chatContextAction(room), + activeChat: controller.activeChat == room.id, + ); + }, + ), + ], + ), + ); + }, ); } } diff --git a/lib/pages/chat_list/chat_list_header.dart b/lib/pages/chat_list/chat_list_header.dart index 5e76e780f..d60cc9ba2 100644 --- a/lib/pages/chat_list/chat_list_header.dart +++ b/lib/pages/chat_list/chat_list_header.dart @@ -43,88 +43,77 @@ class ChatListHeader extends StatelessWidget implements PreferredSizeWidget { L10n.of(context)!.share, key: const ValueKey(SelectMode.share), ) - : selectMode == SelectMode.select - ? Text( - controller.selectedRoomIds.length.toString(), - key: const ValueKey(SelectMode.select), - ) - : TextField( - controller: controller.searchController, - focusNode: controller.searchFocusNode, - textInputAction: TextInputAction.search, - onChanged: (text) => controller.onSearchEnter( - text, - globalSearch: globalSearch, - ), - decoration: InputDecoration( - fillColor: Theme.of(context).colorScheme.secondaryContainer, - border: OutlineInputBorder( - borderSide: BorderSide.none, - borderRadius: BorderRadius.circular(99), - ), - contentPadding: EdgeInsets.zero, - hintText: L10n.of(context)!.searchChatsRooms, - hintStyle: TextStyle( - color: Theme.of(context).colorScheme.onPrimaryContainer, - fontWeight: FontWeight.normal, - ), - floatingLabelBehavior: FloatingLabelBehavior.never, - prefixIcon: controller.isSearchMode - ? IconButton( - tooltip: L10n.of(context)!.cancel, - icon: const Icon(Icons.close_outlined), - onPressed: controller.cancelSearch, - color: Theme.of(context) - .colorScheme - .onPrimaryContainer, - ) - : IconButton( - onPressed: controller.startSearch, - icon: Icon( - Icons.search_outlined, - color: Theme.of(context) - .colorScheme - .onPrimaryContainer, - ), - ), - suffixIcon: controller.isSearchMode && globalSearch - ? controller.isSearching - ? const Padding( - padding: EdgeInsets.symmetric( - vertical: 10.0, - horizontal: 12, - ), - child: SizedBox.square( - dimension: 24, - child: CircularProgressIndicator.adaptive( - strokeWidth: 2, - ), - ), - ) - : TextButton.icon( - onPressed: controller.setServer, - style: TextButton.styleFrom( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(99), - ), - textStyle: const TextStyle(fontSize: 12), - ), - icon: const Icon(Icons.edit_outlined, size: 16), - label: Text( - controller.searchServer ?? - Matrix.of(context) - .client - .homeserver! - .host, - maxLines: 2, - ), - ) - : SizedBox( - width: 0, - child: ClientChooserButton(controller), - ), - ), + : TextField( + controller: controller.searchController, + focusNode: controller.searchFocusNode, + textInputAction: TextInputAction.search, + onChanged: (text) => controller.onSearchEnter( + text, + globalSearch: globalSearch, + ), + decoration: InputDecoration( + fillColor: Theme.of(context).colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), ), + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context)!.searchChatsRooms, + hintStyle: TextStyle( + color: Theme.of(context).colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: controller.isSearchMode + ? IconButton( + tooltip: L10n.of(context)!.cancel, + icon: const Icon(Icons.close_outlined), + onPressed: controller.cancelSearch, + color: Theme.of(context).colorScheme.onPrimaryContainer, + ) + : IconButton( + onPressed: controller.startSearch, + icon: Icon( + Icons.search_outlined, + color: + Theme.of(context).colorScheme.onPrimaryContainer, + ), + ), + suffixIcon: controller.isSearchMode && globalSearch + ? controller.isSearching + ? const Padding( + padding: EdgeInsets.symmetric( + vertical: 10.0, + horizontal: 12, + ), + child: SizedBox.square( + dimension: 24, + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + ) + : TextButton.icon( + onPressed: controller.setServer, + style: TextButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(99), + ), + textStyle: const TextStyle(fontSize: 12), + ), + icon: const Icon(Icons.edit_outlined, size: 16), + label: Text( + controller.searchServer ?? + Matrix.of(context).client.homeserver!.host, + maxLines: 2, + ), + ) + : SizedBox( + width: 0, + child: ClientChooserButton(controller), + ), + ), + ), actions: selectMode == SelectMode.share ? [ Padding( @@ -135,48 +124,7 @@ class ChatListHeader extends StatelessWidget implements PreferredSizeWidget { child: ClientChooserButton(controller), ), ] - : selectMode == SelectMode.select - ? [ - if (controller.spaces.isNotEmpty) - IconButton( - tooltip: L10n.of(context)!.addToSpace, - icon: const Icon(Icons.workspaces_outlined), - onPressed: controller.addToSpace, - ), - IconButton( - tooltip: L10n.of(context)!.toggleUnread, - icon: Icon( - controller.anySelectedRoomNotMarkedUnread - ? Icons.mark_chat_unread_outlined - : Icons.mark_chat_read_outlined, - ), - onPressed: controller.toggleUnread, - ), - IconButton( - tooltip: L10n.of(context)!.toggleFavorite, - icon: Icon( - controller.anySelectedRoomNotFavorite - ? Icons.push_pin - : Icons.push_pin_outlined, - ), - onPressed: controller.toggleFavouriteRoom, - ), - IconButton( - icon: Icon( - controller.anySelectedRoomNotMuted - ? Icons.notifications_off_outlined - : Icons.notifications_outlined, - ), - tooltip: L10n.of(context)!.toggleMuted, - onPressed: controller.toggleMuted, - ), - IconButton( - icon: const Icon(Icons.delete_outlined), - tooltip: L10n.of(context)!.archive, - onPressed: controller.archiveAction, - ), - ] - : null, + : null, ); } diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 4ac02e62b..7bf5f6b52 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -17,8 +17,8 @@ enum ArchivedRoomAction { delete, rejoin } class ChatListItem extends StatelessWidget { final Room room; + final Room? lastEventRoom; final bool activeChat; - final bool selected; final void Function()? onLongPress; final void Function()? onForget; final void Function() onTap; @@ -27,11 +27,11 @@ class ChatListItem extends StatelessWidget { const ChatListItem( this.room, { this.activeChat = false, - this.selected = false, required this.onTap, this.onLongPress, this.onForget, this.filter, + this.lastEventRoom, super.key, }); @@ -64,24 +64,23 @@ class ChatListItem extends StatelessWidget { @override Widget build(BuildContext context) { final isMuted = room.pushRuleState != PushRuleState.notify; - final typingText = room.getLocalizedTypingText(context); - final lastEvent = room.lastEvent; + final lastEventRoom = this.lastEventRoom ?? room; + final typingText = lastEventRoom.getLocalizedTypingText(context); + final lastEvent = lastEventRoom.lastEvent; final ownMessage = lastEvent?.senderId == room.client.userID; - final unread = room.isUnread || room.membership == Membership.invite; + final unread = + lastEventRoom.isUnread || lastEventRoom.membership == Membership.invite; final theme = Theme.of(context); final directChatMatrixId = room.directChatMatrixID; final isDirectChat = directChatMatrixId != null; - final unreadBubbleSize = unread || room.hasNewMessages - ? room.notificationCount > 0 + final unreadBubbleSize = unread || lastEventRoom.hasNewMessages + ? lastEventRoom.notificationCount > 0 ? 20.0 : 14.0 : 0.0; - final hasNotifications = room.notificationCount > 0; - final backgroundColor = selected - ? theme.colorScheme.primaryContainer - : activeChat - ? theme.colorScheme.secondaryContainer - : null; + final hasNotifications = lastEventRoom.notificationCount > 0; + final backgroundColor = + activeChat ? theme.colorScheme.secondaryContainer : null; final displayname = room.getLocalizedDisplayname( MatrixLocals(L10n.of(context)!), ); @@ -119,6 +118,9 @@ class ChatListItem extends StatelessWidget { curve: FluffyThemes.animationCurve, scale: hovered ? 1.1 : 1.0, child: Avatar( + borderRadius: room.isSpace + ? BorderRadius.circular(AppConfig.borderRadius / 3) + : null, mxContent: room.avatar, name: displayname, presenceUserId: directChatMatrixId, @@ -133,14 +135,12 @@ class ChatListItem extends StatelessWidget { child: AnimatedScale( duration: FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, - scale: (hovered || selected) ? 1.0 : 0.0, + scale: (hovered) ? 1.0 : 0.0, child: Material( color: backgroundColor, borderRadius: BorderRadius.circular(16), - child: Icon( - selected - ? Icons.check_circle - : Icons.check_circle_outlined, + child: const Icon( + Icons.check_circle_outlined, size: 18, ), ), @@ -180,7 +180,9 @@ class ChatListItem extends StatelessWidget { color: theme.colorScheme.primary, ), ), - if (lastEvent != null && room.membership != Membership.invite) + if (!room.isSpace && + lastEvent != null && + room.membership != Membership.invite) Padding( padding: const EdgeInsets.only(left: 4.0), child: Text( @@ -193,11 +195,30 @@ class ChatListItem extends StatelessWidget { ), ), ), + if (room.isSpace) + const Icon( + Icons.arrow_circle_right_outlined, + size: 18, + ), ], ), subtitle: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ + if (room.isSpace) ...[ + room.id != lastEventRoom.id && + lastEventRoom.isUnreadOrInvited + ? Avatar( + mxContent: lastEventRoom.avatar, + name: lastEventRoom.name, + size: 18, + ) + : const Icon( + Icons.workspaces_outlined, + size: 18, + ), + const SizedBox(width: 4), + ], if (typingText.isEmpty && ownMessage && room.lastEvent!.status.isSending) ...[ @@ -222,62 +243,71 @@ class ChatListItem extends StatelessWidget { ), ), Expanded( - child: typingText.isNotEmpty + child: room.isSpace && !lastEventRoom.isUnreadOrInvited ? Text( - typingText, - style: TextStyle( - color: theme.colorScheme.primary, + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length.toString(), + (room.summary.mJoinedMemberCount ?? 1).toString(), ), - maxLines: 1, - softWrap: false, ) - : FutureBuilder( - key: ValueKey( - '${lastEvent?.eventId}_${lastEvent?.type}', - ), - future: needLastEventSender - ? lastEvent.calcLocalizedBody( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: !isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId, - ) - : null, - initialData: lastEvent?.calcLocalizedBodyFallback( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: !isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId, - ), - builder: (context, snapshot) => Text( - room.membership == Membership.invite - ? isDirectChat - ? L10n.of(context)!.invitePrivateChat - : L10n.of(context)!.inviteGroupChat - : snapshot.data ?? - L10n.of(context)!.emptyChat, - softWrap: false, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontWeight: unread || room.hasNewMessages - ? FontWeight.bold - : null, - color: theme.colorScheme.onSurfaceVariant, - decoration: room.lastEvent?.redacted == true - ? TextDecoration.lineThrough + : typingText.isNotEmpty + ? Text( + typingText, + style: TextStyle( + color: theme.colorScheme.primary, + ), + maxLines: 1, + softWrap: false, + ) + : FutureBuilder( + key: ValueKey( + '${lastEvent?.eventId}_${lastEvent?.type}', + ), + future: needLastEventSender + ? lastEvent.calcLocalizedBody( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ) : null, + initialData: + lastEvent?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ), + builder: (context, snapshot) => Text( + room.membership == Membership.invite + ? isDirectChat + ? L10n.of(context)!.invitePrivateChat + : L10n.of(context)!.inviteGroupChat + : snapshot.data ?? + L10n.of(context)!.emptyChat, + softWrap: false, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: + unread || lastEventRoom.hasNewMessages + ? FontWeight.bold + : null, + color: theme.colorScheme.onSurfaceVariant, + decoration: room.lastEvent?.redacted == true + ? TextDecoration.lineThrough + : null, + ), + ), ), - ), - ), ), const SizedBox(width: 8), AnimatedContainer( @@ -288,7 +318,9 @@ class ChatListItem extends StatelessWidget { width: !hasNotifications && !unread && !room.hasNewMessages ? 0 : (unreadBubbleSize - 9) * - room.notificationCount.toString().length + + lastEventRoom.notificationCount + .toString() + .length + 9, decoration: BoxDecoration( color: room.highlightCount > 0 || @@ -303,7 +335,7 @@ class ChatListItem extends StatelessWidget { child: Center( child: hasNotifications ? Text( - room.notificationCount.toString(), + lastEventRoom.notificationCount.toString(), style: TextStyle( color: room.highlightCount > 0 ? Colors.white diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 160db9b86..798464693 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -1,87 +1,21 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:badges/badges.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:keyboard_shortcuts/keyboard_shortcuts.dart'; -import 'package:fluffychat/config/app_config.dart'; -import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat_list/chat_list.dart'; -import 'package:fluffychat/pages/chat_list/navi_rail_item.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; -import 'package:fluffychat/widgets/avatar.dart'; -import 'package:fluffychat/widgets/unread_rooms_badge.dart'; import '../../widgets/matrix.dart'; import 'chat_list_body.dart'; -import 'start_chat_fab.dart'; class ChatListView extends StatelessWidget { final ChatListController controller; const ChatListView(this.controller, {super.key}); - List getNavigationDestinations(BuildContext context) { - final badgePosition = BadgePosition.topEnd(top: -12, end: -8); - return [ - if (AppConfig.separateChatTypes) ...[ - NavigationDestination( - icon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: - controller.getRoomFilterByActiveFilter(ActiveFilter.messages), - child: const Icon(Icons.chat_outlined), - ), - selectedIcon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: - controller.getRoomFilterByActiveFilter(ActiveFilter.messages), - child: const Icon(Icons.chat), - ), - label: L10n.of(context)!.messages, - ), - NavigationDestination( - icon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: controller.getRoomFilterByActiveFilter(ActiveFilter.groups), - child: const Icon(Icons.group_outlined), - ), - selectedIcon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: controller.getRoomFilterByActiveFilter(ActiveFilter.groups), - child: const Icon(Icons.group), - ), - label: L10n.of(context)!.groups, - ), - ] else - NavigationDestination( - icon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: - controller.getRoomFilterByActiveFilter(ActiveFilter.allChats), - child: const Icon(Icons.chat_outlined), - ), - selectedIcon: UnreadRoomsBadge( - badgePosition: badgePosition, - filter: - controller.getRoomFilterByActiveFilter(ActiveFilter.allChats), - child: const Icon(Icons.chat), - ), - label: L10n.of(context)!.chats, - ), - if (controller.spaces.isNotEmpty) - const NavigationDestination( - icon: Icon(Icons.workspaces_outlined), - selectedIcon: Icon(Icons.workspaces), - label: 'Spaces', - ), - ]; - } - @override Widget build(BuildContext context) { - final client = Matrix.of(context).client; return StreamBuilder( stream: Matrix.of(context).onShareContentChanged.stream, builder: (_, __) { @@ -89,10 +23,7 @@ class ChatListView extends StatelessWidget { return PopScope( canPop: controller.selectMode == SelectMode.normal && !controller.isSearchMode && - controller.activeFilter == - (AppConfig.separateChatTypes - ? ActiveFilter.messages - : ActiveFilter.allChats), + controller.activeFilter == ActiveFilter.allChats, onPopInvoked: (pop) async { if (pop) return; final selMode = controller.selectMode; @@ -104,122 +35,33 @@ class ChatListView extends StatelessWidget { controller.cancelAction(); return; } - if (controller.activeFilter != - (AppConfig.separateChatTypes - ? ActiveFilter.messages - : ActiveFilter.allChats)) { - controller - .onDestinationSelected(AppConfig.separateChatTypes ? 1 : 0); - return; - } }, - child: Row( - children: [ - if (FluffyThemes.isColumnMode(context) && - controller.widget.displayNavigationRail) ...[ - Builder( - builder: (context) { - final allSpaces = - client.rooms.where((room) => room.isSpace); - final rootSpaces = allSpaces - .where( - (space) => !allSpaces.any( - (parentSpace) => parentSpace.spaceChildren - .any((child) => child.roomId == space.id), - ), - ) - .toList(); - final destinations = getNavigationDestinations(context); - - return SizedBox( - width: FluffyThemes.navRailWidth, - child: ListView.builder( - scrollDirection: Axis.vertical, - itemCount: rootSpaces.length + destinations.length, - itemBuilder: (context, i) { - if (i < destinations.length) { - return NaviRailItem( - isSelected: i == controller.selectedIndex, - onTap: () => controller.onDestinationSelected(i), - icon: destinations[i].icon, - selectedIcon: destinations[i].selectedIcon, - toolTip: destinations[i].label, - ); - } - i -= destinations.length; - final isSelected = - controller.activeFilter == ActiveFilter.spaces && - rootSpaces[i].id == controller.activeSpaceId; - return NaviRailItem( - toolTip: rootSpaces[i].getLocalizedDisplayname( - MatrixLocals(L10n.of(context)!), + child: GestureDetector( + onTap: FocusManager.instance.primaryFocus?.unfocus, + excludeFromSemantics: true, + behavior: HitTestBehavior.translucent, + child: Scaffold( + body: ChatListViewBody(controller), + floatingActionButton: KeyBoardShortcuts( + keysToPress: { + LogicalKeyboardKey.controlLeft, + LogicalKeyboardKey.keyN, + }, + onKeysPressed: () => context.go('/rooms/newprivatechat'), + helpLabel: L10n.of(context)!.newChat, + child: + selectMode == SelectMode.normal && !controller.isSearchMode + ? FloatingActionButton.extended( + onPressed: controller.addChatAction, + icon: const Icon(Icons.add_outlined), + label: Text( + L10n.of(context)!.chat, + overflow: TextOverflow.fade, ), - isSelected: isSelected, - onTap: () => - controller.setActiveSpace(rootSpaces[i].id), - icon: Avatar( - mxContent: rootSpaces[i].avatar, - name: rootSpaces[i].getLocalizedDisplayname( - MatrixLocals(L10n.of(context)!), - ), - size: 32, - ), - ); - }, - ), - ); - }, - ), - Container( - color: Theme.of(context).dividerColor, - width: 1, - ), - ], - Expanded( - child: GestureDetector( - onTap: FocusManager.instance.primaryFocus?.unfocus, - excludeFromSemantics: true, - behavior: HitTestBehavior.translucent, - child: Scaffold( - body: ChatListViewBody(controller), - bottomNavigationBar: controller.displayNavigationBar - ? NavigationBar( - elevation: 4, - labelBehavior: - NavigationDestinationLabelBehavior.alwaysShow, - shadowColor: - Theme.of(context).colorScheme.onSurface, - backgroundColor: - Theme.of(context).colorScheme.surface, - surfaceTintColor: - Theme.of(context).colorScheme.surface, - selectedIndex: controller.selectedIndex, - onDestinationSelected: - controller.onDestinationSelected, - destinations: getNavigationDestinations(context), ) - : null, - floatingActionButton: KeyBoardShortcuts( - keysToPress: { - LogicalKeyboardKey.controlLeft, - LogicalKeyboardKey.keyN, - }, - onKeysPressed: () => context.go('/rooms/newprivatechat'), - helpLabel: L10n.of(context)!.newChat, - child: selectMode == SelectMode.normal && - !controller.isSearchMode - ? StartChatFloatingActionButton( - activeFilter: controller.activeFilter, - roomsIsEmpty: false, - scrolledToTop: controller.scrolledToTop, - createNewSpace: controller.createNewSpace, - ) - : const SizedBox.shrink(), - ), - ), - ), + : const SizedBox.shrink(), ), - ], + ), ), ); }, diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index a984b4377..6459de1e8 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -5,26 +5,32 @@ import 'package:collection/collection.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:go_router/go_router.dart'; -import 'package:matrix/matrix.dart' as sdk; import 'package:matrix/matrix.dart'; -import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; import 'package:fluffychat/pages/chat_list/search_title.dart'; -import 'package:fluffychat/pages/chat_list/utils/on_chat_tap.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; -import '../../utils/localized_exception_extension.dart'; -import '../../widgets/matrix.dart'; -import 'chat_list_header.dart'; +import 'package:fluffychat/widgets/matrix.dart'; class SpaceView extends StatefulWidget { - final ChatListController controller; - final ScrollController scrollController; - const SpaceView( - this.controller, { + final String spaceId; + final void Function() onBack; + final void Function(String spaceId) toParentSpace; + final void Function(Room room) onChatTab; + final void Function(Room room) onChatContext; + final String? activeChat; + + const SpaceView({ + required this.spaceId, + required this.onBack, + required this.onChatTab, + required this.activeChat, + required this.toParentSpace, + required this.onChatContext, super.key, - required this.scrollController, }); @override @@ -32,543 +38,449 @@ class SpaceView extends StatefulWidget { } class _SpaceViewState extends State { - static final Map _lastResponse = {}; - - String? prevBatch; - Object? error; - bool loading = false; + final List _discoveredChildren = []; + final TextEditingController _filterController = TextEditingController(); + String? _nextBatch; + bool _noMoreRooms = false; + bool _isLoading = false; @override void initState() { - loadHierarchy(); + _loadHierarchy(); super.initState(); } - void _refresh() { - _lastResponse.remove(widget.controller.activeSpaceId); - loadHierarchy(); - } - - Future loadHierarchy([String? prevBatch]) async { - final activeSpaceId = widget.controller.activeSpaceId; - if (activeSpaceId == null) return null; - final client = Matrix.of(context).client; - - final activeSpace = client.getRoomById(activeSpaceId); - await activeSpace?.postLoad(); + void _loadHierarchy() async { + final room = Matrix.of(context).client.getRoomById(widget.spaceId); + if (room == null) return; setState(() { - error = null; - loading = true; + _isLoading = true; }); try { - final response = await client.getSpaceHierarchy( - activeSpaceId, - maxDepth: 1, - from: prevBatch, + final hierarchy = await room.client.getSpaceHierarchy( + widget.spaceId, + suggestedOnly: false, + maxDepth: 2, + from: _nextBatch, ); - - if (prevBatch != null) { - response.rooms.insertAll(0, _lastResponse[activeSpaceId]?.rooms ?? []); - } + if (!mounted) return; setState(() { - _lastResponse[activeSpaceId] = response; - }); - return _lastResponse[activeSpaceId]!; - } catch (e) { - setState(() { - error = e; - }); - rethrow; - } finally { - setState(() { - loading = false; - }); - } - } - - void _onJoinSpaceChild(SpaceRoomsChunk spaceChild) async { - final client = Matrix.of(context).client; - final space = client.getRoomById(widget.controller.activeSpaceId!); - if (client.getRoomById(spaceChild.roomId) == null) { - final result = await showFutureLoadingDialog( - context: context, - future: () async { - await client.joinRoom( - spaceChild.roomId, - serverName: space?.spaceChildren - .firstWhereOrNull( - (child) => child.roomId == spaceChild.roomId, - ) - ?.via, - ); - if (client.getRoomById(spaceChild.roomId) == null) { - // Wait for room actually appears in sync - await client.waitForRoomInSync(spaceChild.roomId, join: true); - } - }, - ); - if (result.error != null) return; - _refresh(); - } - if (spaceChild.roomType == 'm.space') { - if (spaceChild.roomId == widget.controller.activeSpaceId) { - context.go('/rooms/${spaceChild.roomId}'); - } else { - widget.controller.setActiveSpace(spaceChild.roomId); - } - return; - } - context.go('/rooms/${spaceChild.roomId}'); - } - - void _onSpaceChildContextMenu([ - SpaceRoomsChunk? spaceChild, - Room? room, - ]) async { - final client = Matrix.of(context).client; - final activeSpaceId = widget.controller.activeSpaceId; - final activeSpace = - activeSpaceId == null ? null : client.getRoomById(activeSpaceId); - final action = await showModalActionSheet( - context: context, - title: spaceChild?.name ?? - room?.getLocalizedDisplayname( - MatrixLocals(L10n.of(context)!), - ), - message: spaceChild?.topic ?? room?.topic, - actions: [ - if (room == null) - SheetAction( - key: SpaceChildContextAction.join, - label: L10n.of(context)!.joinRoom, - icon: Icons.send_outlined, - ), - if (spaceChild != null && - (activeSpace?.canChangeStateEvent(EventTypes.SpaceChild) ?? false)) - SheetAction( - key: SpaceChildContextAction.removeFromSpace, - label: L10n.of(context)!.removeFromSpace, - icon: Icons.delete_sweep_outlined, - ), - if (room != null) - SheetAction( - key: SpaceChildContextAction.leave, - label: L10n.of(context)!.leave, - icon: Icons.delete_outlined, - isDestructiveAction: true, - ), - ], - ); - if (action == null) return; - - switch (action) { - case SpaceChildContextAction.join: - _onJoinSpaceChild(spaceChild!); - break; - case SpaceChildContextAction.leave: - await showFutureLoadingDialog( - context: context, - future: room!.leave, + _nextBatch = hierarchy.nextBatch; + if (hierarchy.nextBatch == null) { + _noMoreRooms = true; + } + _discoveredChildren.addAll( + hierarchy.rooms + .where((c) => room.client.getRoomById(c.roomId) == null), ); - break; - case SpaceChildContextAction.removeFromSpace: - await showFutureLoadingDialog( - context: context, - future: () => activeSpace!.removeSpaceChild(spaceChild!.roomId), - ); - break; + _isLoading = false; + }); + } catch (e, s) { + Logs().w('Unable to load hierarchy', e, s); + if (!mounted) return; + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text(e.toLocalizedString(context)))); + setState(() { + _isLoading = false; + }); } } - void _addChatOrSubSpace() async { - final roomType = await showConfirmationDialog( - context: context, - title: L10n.of(context)!.addChatOrSubSpace, - actions: [ - AlertDialogAction( - key: AddRoomType.subspace, - label: L10n.of(context)!.createNewSpace, - ), - AlertDialogAction( - key: AddRoomType.chat, - label: L10n.of(context)!.createGroup, - ), - ], - ); - if (roomType == null) return; + void _joinChildRoom(SpaceRoomsChunk item) async { + final client = Matrix.of(context).client; + final space = client.getRoomById(widget.spaceId); - final names = await showTextInputDialog( + final consent = await showOkCancelAlertDialog( context: context, - title: roomType == AddRoomType.subspace - ? L10n.of(context)!.createNewSpace - : L10n.of(context)!.createGroup, - textFields: [ - DialogTextField( - hintText: roomType == AddRoomType.subspace - ? L10n.of(context)!.spaceName - : L10n.of(context)!.groupName, - minLines: 1, - maxLines: 1, - maxLength: 64, - validator: (text) { - if (text == null || text.isEmpty) { - return L10n.of(context)!.pleaseChoose; - } - return null; - }, - ), - DialogTextField( - hintText: L10n.of(context)!.chatDescription, - minLines: 4, - maxLines: 8, - maxLength: 255, - ), - ], - okLabel: L10n.of(context)!.create, + title: item.name ?? item.canonicalAlias ?? L10n.of(context)!.emptyChat, + message: item.topic, + okLabel: L10n.of(context)!.joinRoom, cancelLabel: L10n.of(context)!.cancel, ); - if (names == null) return; - final client = Matrix.of(context).client; - final result = await showFutureLoadingDialog( + if (consent != OkCancelResult.ok) return; + if (!mounted) return; + + await showFutureLoadingDialog( context: context, future: () async { - late final String roomId; - final activeSpace = client.getRoomById( - widget.controller.activeSpaceId!, - )!; - - if (roomType == AddRoomType.subspace) { - roomId = await client.createSpace( - name: names.first, - topic: names.last.isEmpty ? null : names.last, - visibility: activeSpace.joinRules == JoinRules.public - ? sdk.Visibility.public - : sdk.Visibility.private, - ); - } else { - roomId = await client.createGroupChat( - groupName: names.first, - initialState: names.length > 1 && names.last.isNotEmpty - ? [ - sdk.StateEvent( - type: sdk.EventTypes.RoomTopic, - content: {'topic': names.last}, - ), - ] - : null, - ); + await client.joinRoom( + item.roomId, + serverName: space?.spaceChildren + .firstWhereOrNull( + (child) => child.roomId == item.roomId, + ) + ?.via, + ); + if (client.getRoomById(item.roomId) == null) { + // Wait for room actually appears in sync + await client.waitForRoomInSync(item.roomId, join: true); } - await activeSpace.setSpaceChild(roomId); }, ); - if (result.error != null) return; - _refresh(); + if (!mounted) return; + + setState(() { + _discoveredChildren.remove(item); + }); + } + + void _onSpaceAction(SpaceActions action) async { + final space = Matrix.of(context).client.getRoomById(widget.spaceId); + + switch (action) { + case SpaceActions.settings: + await space?.postLoad(); + context.push('/rooms/${widget.spaceId}/details'); + break; + case SpaceActions.invite: + await space?.postLoad(); + context.push('/rooms/${widget.spaceId}/invite'); + break; + case SpaceActions.leave: + final confirmed = await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context)!.areYouSure, + okLabel: L10n.of(context)!.ok, + cancelLabel: L10n.of(context)!.cancel, + message: L10n.of(context)!.archiveRoomDescription, + ); + if (!mounted) return; + if (confirmed != OkCancelResult.ok) return; + + final success = await showFutureLoadingDialog( + context: context, + future: () async => await space?.leave(), + ); + if (!mounted) return; + if (success.error != null) return; + widget.onBack(); + } } @override Widget build(BuildContext context) { - final client = Matrix.of(context).client; - final activeSpaceId = widget.controller.activeSpaceId; - final activeSpace = activeSpaceId == null - ? null - : client.getRoomById( - activeSpaceId, - ); - final allSpaces = client.rooms.where((room) => room.isSpace); - if (activeSpaceId == null) { - final rootSpaces = allSpaces - .where( - (space) => - !allSpaces.any( - (parentSpace) => parentSpace.spaceChildren - .any((child) => child.roomId == space.id), - ) && - space - .getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)) - .toLowerCase() - .contains( - widget.controller.searchController.text.toLowerCase(), - ), - ) - .toList(); - - return SafeArea( - child: CustomScrollView( - controller: widget.scrollController, - slivers: [ - ChatListHeader(controller: widget.controller), - SliverList( - delegate: SliverChildBuilderDelegate( - (context, i) { - final rootSpace = rootSpaces[i]; - final displayname = rootSpace.getLocalizedDisplayname( - MatrixLocals(L10n.of(context)!), - ); - return Material( - color: Theme.of(context).colorScheme.surface, - child: ListTile( - leading: Avatar( - mxContent: rootSpace.avatar, - name: displayname, - ), - title: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - subtitle: Text( - L10n.of(context)!.numChats( - rootSpace.spaceChildren.length.toString(), - ), - ), - onTap: () => - widget.controller.setActiveSpace(rootSpace.id), - onLongPress: () => - _onSpaceChildContextMenu(null, rootSpace), - trailing: const Icon(Icons.chevron_right_outlined), - ), - ); - }, - childCount: rootSpaces.length, - ), - ), - ], + final room = Matrix.of(context).client.getRoomById(widget.spaceId); + final displayname = + room?.getLocalizedDisplayname() ?? L10n.of(context)!.nothingFound; + return Scaffold( + appBar: AppBar( + leading: Center( + child: CloseButton( + onPressed: widget.onBack, + ), ), - ); - } - - final parentSpace = allSpaces.firstWhereOrNull( - (space) => - space.spaceChildren.any((child) => child.roomId == activeSpaceId), - ); - return PopScope( - canPop: parentSpace == null, - onPopInvoked: (pop) async { - if (pop) return; - if (parentSpace != null) { - widget.controller.setActiveSpace(parentSpace.id); - } - }, - child: SafeArea( - child: CustomScrollView( - controller: widget.scrollController, - slivers: [ - ChatListHeader(controller: widget.controller, globalSearch: false), - SliverAppBar( - automaticallyImplyLeading: false, - primary: false, - titleSpacing: 0, - title: ListTile( - leading: BackButton( - onPressed: () => - widget.controller.setActiveSpace(parentSpace?.id), + titleSpacing: 0, + title: ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar( + mxContent: room?.avatar, + name: displayname, + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + title: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: room == null + ? null + : Text( + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length, + room.summary.mJoinedMemberCount ?? 1, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), - title: Text( - parentSpace == null - ? L10n.of(context)!.allSpaces - : parentSpace.getLocalizedDisplayname( - MatrixLocals(L10n.of(context)!), - ), - ), - trailing: IconButton( - icon: loading - ? const CircularProgressIndicator.adaptive(strokeWidth: 2) - : const Icon(Icons.refresh_outlined), - onPressed: loading ? null : _refresh, + ), + actions: [ + PopupMenuButton( + onSelected: _onSpaceAction, + itemBuilder: (context) => [ + PopupMenuItem( + value: SpaceActions.settings, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.settings), + ], ), ), - ), - Builder( - builder: (context) { - final response = _lastResponse[activeSpaceId]; - final error = this.error; - if (error != null) { - return SliverFillRemaining( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(16.0), - child: Text(error.toLocalizedString(context)), - ), - IconButton( - onPressed: _refresh, - icon: const Icon(Icons.refresh_outlined), - ), - ], - ), - ); - } - if (response == null) { - return SliverFillRemaining( - child: Center( - child: Text(L10n.of(context)!.loadingPleaseWait), - ), - ); - } - final spaceChildren = response.rooms; - final canLoadMore = response.nextBatch != null; - return SliverList( - delegate: SliverChildBuilderDelegate( - (context, i) { - if (canLoadMore && i == spaceChildren.length) { - return Padding( - padding: const EdgeInsets.all(16.0), - child: OutlinedButton.icon( - label: loading - ? const LinearProgressIndicator() - : Text(L10n.of(context)!.loadMore), - icon: const Icon(Icons.chevron_right_outlined), - onPressed: loading - ? null - : () { - loadHierarchy(response.nextBatch); - }, + PopupMenuItem( + value: SpaceActions.invite, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.person_add_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.invite), + ], + ), + ), + PopupMenuItem( + value: SpaceActions.leave, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.delete_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.leave), + ], + ), + ), + ], + ), + ], + ), + body: room == null + ? const Center( + child: Icon( + Icons.search_outlined, + size: 80, + ), + ) + : StreamBuilder( + stream: room.client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, snapshot) { + final joinedRooms = room.spaceChildren + .map((child) { + final roomId = child.roomId; + if (roomId == null) return null; + return room.client.getRoomById(roomId); + }) + .whereType() + .where((room) => room.membership != Membership.leave) + .toList(); + + // Sort rooms by last activity + joinedRooms.sort( + (b, a) => (a.lastEvent?.originServerTs ?? + DateTime.fromMillisecondsSinceEpoch(0)) + .compareTo( + b.lastEvent?.originServerTs ?? + DateTime.fromMillisecondsSinceEpoch(0), + ), + ); + + final joinedParents = room.spaceParents + .map((parent) { + final roomId = parent.roomId; + if (roomId == null) return null; + return room.client.getRoomById(roomId); + }) + .whereType() + .toList(); + final filter = _filterController.text.trim().toLowerCase(); + return CustomScrollView( + slivers: [ + SliverAppBar( + floating: true, + toolbarHeight: 72, + scrolledUnderElevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: TextField( + controller: _filterController, + onChanged: (_) => setState(() {}), + textInputAction: TextInputAction.search, + decoration: InputDecoration( + fillColor: + Theme.of(context).colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), ), - ); - } - final spaceChild = spaceChildren[i]; - final room = client.getRoomById(spaceChild.roomId); - if (room != null && !room.isSpace) { - return ChatListItem( - room, - onLongPress: () => - _onSpaceChildContextMenu(spaceChild, room), - activeChat: widget.controller.activeChat == room.id, - onTap: () => onChatTap(room, context), - ); - } - final isSpace = spaceChild.roomType == 'm.space'; - final topic = spaceChild.topic?.isEmpty ?? true - ? null - : spaceChild.topic; - if (spaceChild.roomId == activeSpaceId) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - SearchTitle( - title: spaceChild.name ?? - spaceChild.canonicalAlias ?? - 'Space', - icon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10.0, - ), - child: Avatar( - size: 24, - mxContent: spaceChild.avatarUrl, - name: spaceChild.name, - ), - ), + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context)!.search, + hintStyle: TextStyle( + color: Theme.of(context) + .colorScheme + .onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.search_outlined, color: Theme.of(context) .colorScheme - .secondaryContainer - .withAlpha(128), - trailing: const Padding( - padding: EdgeInsets.symmetric(horizontal: 16.0), - child: Icon(Icons.edit_outlined), - ), - onTap: () => _onJoinSpaceChild(spaceChild), - ), - if (activeSpace?.canChangeStateEvent( - EventTypes.SpaceChild, - ) == - true) - Material( - child: ListTile( - leading: const CircleAvatar( - child: Icon(Icons.group_add_outlined), - ), - title: - Text(L10n.of(context)!.addChatOrSubSpace), - trailing: - const Icon(Icons.chevron_right_outlined), - onTap: _addChatOrSubSpace, - ), - ), - ], - ); - } - final name = spaceChild.name ?? - spaceChild.canonicalAlias ?? - L10n.of(context)!.chat; - if (widget.controller.isSearchMode && - !name.toLowerCase().contains( - widget.controller.searchController.text - .toLowerCase(), - )) { - return const SizedBox.shrink(); - } - return Material( - child: ListTile( - leading: Avatar( - mxContent: spaceChild.avatarUrl, - name: spaceChild.name, - ), - title: Row( - children: [ - Expanded( - child: Text( - name, - maxLines: 1, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - ), - ), - if (!isSpace) ...[ - const Icon( - Icons.people_outline, - size: 16, - ), - const SizedBox(width: 4), - Text( - spaceChild.numJoinedMembers.toString(), - style: const TextStyle(fontSize: 14), - ), - ], - ], - ), - onTap: () => room?.isSpace == true - ? widget.controller.setActiveSpace(room!.id) - : _onSpaceChildContextMenu(spaceChild, room), - onLongPress: () => - _onSpaceChildContextMenu(spaceChild, room), - subtitle: Text( - topic ?? - (isSpace - ? L10n.of(context)!.enterSpace - : L10n.of(context)!.enterRoom), - maxLines: 1, - style: TextStyle( - color: Theme.of(context).colorScheme.onSurface, + .onPrimaryContainer, ), ), - trailing: isSpace - ? const Icon(Icons.chevron_right_outlined) - : null, ), - ); - }, - childCount: spaceChildren.length + (canLoadMore ? 1 : 0), - ), + ), + ), + SliverList.builder( + itemCount: joinedParents.length, + itemBuilder: (context, i) { + final displayname = + joinedParents[i].getLocalizedDisplayname(); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + minVerticalPadding: 0, + leading: Icon( + Icons.adaptive.arrow_back_outlined, + size: 16, + ), + title: Row( + children: [ + Avatar( + mxContent: joinedParents[i].avatar, + name: displayname, + size: Avatar.defaultSize / 2, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + ), + const SizedBox(width: 8), + Expanded(child: Text(displayname)), + ], + ), + onTap: () => + widget.toParentSpace(joinedParents[i].id), + ), + ), + ); + }, + ), + SliverList.builder( + itemCount: joinedRooms.length + 1, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.joinedChats, + icon: const Icon(Icons.chat_outlined), + ); + } + i--; + final room = joinedRooms[i]; + return ChatListItem( + room, + filter: filter, + onTap: () => widget.onChatTab(room), + onLongPress: () => widget.onChatContext(room), + activeChat: widget.activeChat == room.id, + ); + }, + ), + SliverList.builder( + itemCount: _discoveredChildren.length + 2, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.discover, + icon: const Icon(Icons.explore_outlined), + ); + } + i--; + if (i == _discoveredChildren.length) { + if (_noMoreRooms) { + return Padding( + padding: const EdgeInsets.all(12.0), + child: Center( + child: Text( + L10n.of(context)!.noMoreChatsFound, + style: const TextStyle(fontSize: 13), + ), + ), + ); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 2.0, + ), + child: TextButton( + onPressed: _isLoading ? null : _loadHierarchy, + child: _isLoading + ? LinearProgressIndicator( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ) + : Text(L10n.of(context)!.loadMore), + ), + ); + } + final item = _discoveredChildren[i]; + final displayname = item.name ?? + item.canonicalAlias ?? + L10n.of(context)!.emptyChat; + if (!displayname.toLowerCase().contains(filter)) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + onTap: () => _joinChildRoom(item), + leading: Avatar( + mxContent: item.avatarUrl, + name: displayname, + borderRadius: item.roomType == 'm.space' + ? BorderRadius.circular( + AppConfig.borderRadius / 2, + ) + : null, + ), + title: Row( + children: [ + Expanded( + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + const SizedBox(width: 8), + const Icon(Icons.add_circle_outline_outlined), + ], + ), + subtitle: Text( + item.topic ?? + L10n.of(context)!.countParticipants( + item.numJoinedMembers, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ), + ); + }, + ), + ], ); }, ), - ], - ), - ), ); } } -enum SpaceChildContextAction { - join, +enum SpaceActions { + settings, + invite, leave, - removeFromSpace, } - -enum AddRoomType { chat, subspace } diff --git a/lib/pages/chat_list/start_chat_fab.dart b/lib/pages/chat_list/start_chat_fab.dart deleted file mode 100644 index c6a74c0fd..000000000 --- a/lib/pages/chat_list/start_chat_fab.dart +++ /dev/null @@ -1,88 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:go_router/go_router.dart'; - -import '../../config/themes.dart'; -import 'chat_list.dart'; - -class StartChatFloatingActionButton extends StatelessWidget { - final ActiveFilter activeFilter; - final ValueNotifier scrolledToTop; - final bool roomsIsEmpty; - final void Function() createNewSpace; - - const StartChatFloatingActionButton({ - super.key, - required this.activeFilter, - required this.scrolledToTop, - required this.roomsIsEmpty, - required this.createNewSpace, - }); - - void _onPressed(BuildContext context) async { - switch (activeFilter) { - case ActiveFilter.allChats: - case ActiveFilter.messages: - context.go('/rooms/newprivatechat'); - break; - case ActiveFilter.groups: - context.go('/rooms/newgroup'); - break; - case ActiveFilter.spaces: - createNewSpace(); - break; - } - } - - IconData get icon { - switch (activeFilter) { - case ActiveFilter.allChats: - case ActiveFilter.messages: - return Icons.add_outlined; - case ActiveFilter.groups: - return Icons.group_add_outlined; - case ActiveFilter.spaces: - return Icons.workspaces_outlined; - } - } - - String getLabel(BuildContext context) { - switch (activeFilter) { - case ActiveFilter.allChats: - case ActiveFilter.messages: - return roomsIsEmpty - ? L10n.of(context)!.startFirstChat - : L10n.of(context)!.newChat; - case ActiveFilter.groups: - return L10n.of(context)!.newGroup; - case ActiveFilter.spaces: - return L10n.of(context)!.newSpace; - } - } - - @override - Widget build(BuildContext context) { - return ValueListenableBuilder( - valueListenable: scrolledToTop, - builder: (context, scrolledToTop, _) => AnimatedSize( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - clipBehavior: Clip.none, - child: scrolledToTop - ? FloatingActionButton.extended( - onPressed: () => _onPressed(context), - icon: Icon(icon), - label: Text( - getLabel(context), - overflow: TextOverflow.fade, - ), - ) - : FloatingActionButton( - onPressed: () => _onPressed(context), - child: Icon(icon), - ), - ), - ); - } -} diff --git a/lib/pages/chat_list/utils/on_chat_tap.dart b/lib/pages/chat_list/utils/on_chat_tap.dart deleted file mode 100644 index d24af1fb4..000000000 --- a/lib/pages/chat_list/utils/on_chat_tap.dart +++ /dev/null @@ -1,127 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:adaptive_dialog/adaptive_dialog.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:future_loading_dialog/future_loading_dialog.dart'; -import 'package:go_router/go_router.dart'; -import 'package:matrix/matrix.dart'; - -import 'package:fluffychat/pages/chat/send_file_dialog.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; -import 'package:fluffychat/widgets/matrix.dart'; - -void onChatTap(Room room, BuildContext context) async { - if (room.membership == Membership.invite) { - final inviterId = - room.getState(EventTypes.RoomMember, room.client.userID!)?.senderId; - final inviteAction = await showModalActionSheet( - context: context, - message: room.isDirectChat - ? L10n.of(context)!.invitePrivateChat - : L10n.of(context)!.inviteGroupChat, - title: room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), - actions: [ - SheetAction( - key: InviteActions.accept, - label: L10n.of(context)!.accept, - icon: Icons.check_outlined, - isDefaultAction: true, - ), - SheetAction( - key: InviteActions.decline, - label: L10n.of(context)!.decline, - icon: Icons.close_outlined, - isDestructiveAction: true, - ), - SheetAction( - key: InviteActions.block, - label: L10n.of(context)!.block, - icon: Icons.block_outlined, - isDestructiveAction: true, - ), - ], - ); - if (inviteAction == null) return; - if (inviteAction == InviteActions.block) { - context.go('/rooms/settings/security/ignorelist', extra: inviterId); - return; - } - if (inviteAction == InviteActions.decline) { - await showFutureLoadingDialog( - context: context, - future: room.leave, - ); - return; - } - final joinResult = await showFutureLoadingDialog( - context: context, - future: () async { - final waitForRoom = room.client.waitForRoomInSync( - room.id, - join: true, - ); - await room.join(); - await waitForRoom; - }, - ); - if (joinResult.error != null) return; - } - - if (room.membership == Membership.ban) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(L10n.of(context)!.youHaveBeenBannedFromThisChat), - ), - ); - return; - } - - if (room.membership == Membership.leave) { - context.go('/rooms/archive/${room.id}'); - return; - } - - // Share content into this room - final shareContent = Matrix.of(context).shareContent; - if (shareContent != null) { - final shareFile = shareContent.tryGet('file'); - if (shareContent.tryGet('msgtype') == 'chat.fluffy.shared_file' && - shareFile != null) { - await showDialog( - context: context, - useRootNavigator: false, - builder: (c) => SendFileDialog( - files: [shareFile], - room: room, - ), - ); - Matrix.of(context).shareContent = null; - } else { - final consent = await showOkCancelAlertDialog( - context: context, - title: L10n.of(context)!.forward, - message: L10n.of(context)!.forwardMessageTo( - room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), - ), - okLabel: L10n.of(context)!.forward, - cancelLabel: L10n.of(context)!.cancel, - ); - if (consent == OkCancelResult.cancel) { - Matrix.of(context).shareContent = null; - return; - } - if (consent == OkCancelResult.ok) { - room.sendEvent(shareContent); - Matrix.of(context).shareContent = null; - } - } - } - - context.go('/rooms/${room.id}'); -} - -enum InviteActions { - accept, - decline, - block, -} diff --git a/lib/pages/settings_style/settings_style_view.dart b/lib/pages/settings_style/settings_style_view.dart index 86f48fe87..0b505d597 100644 --- a/lib/pages/settings_style/settings_style_view.dart +++ b/lib/pages/settings_style/settings_style_view.dart @@ -185,12 +185,6 @@ class SettingsStyleView extends StatelessWidget { storeKey: SettingKeys.showPresences, defaultValue: AppConfig.showPresences, ), - SettingsSwitchListTile.adaptive( - title: L10n.of(context)!.separateChatTypes, - onChanged: (b) => AppConfig.separateChatTypes = b, - storeKey: SettingKeys.separateChatTypes, - defaultValue: AppConfig.separateChatTypes, - ), Divider( height: 1, color: Theme.of(context).dividerColor, diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 2066536dc..180f3437a 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -15,6 +15,8 @@ class Avatar extends StatelessWidget { final Client? client; final String? presenceUserId; final Color? presenceBackgroundColor; + final BorderRadius? borderRadius; + final IconData? icon; const Avatar({ this.mxContent, @@ -24,6 +26,8 @@ class Avatar extends StatelessWidget { this.client, this.presenceUserId, this.presenceBackgroundColor, + this.borderRadius, + this.icon, super.key, }); @@ -50,18 +54,25 @@ class Avatar extends StatelessWidget { ), ), ); - final borderRadius = BorderRadius.circular(size / 2); + final borderRadius = this.borderRadius ?? BorderRadius.circular(size / 2); final presenceUserId = this.presenceUserId; final color = noPic ? name?.lightColorAvatar : Theme.of(context).secondaryHeaderColor; final container = Stack( children: [ - ClipRRect( - borderRadius: borderRadius, - child: Container( - width: size, - height: size, + SizedBox( + width: size, + height: size, + child: Material( color: color, + shape: RoundedRectangleBorder( + borderRadius: borderRadius, + side: BorderSide( + width: 0, + color: Theme.of(context).dividerColor, + ), + ), + clipBehavior: Clip.hardEdge, child: noPic ? textWidget : MxcImage( @@ -75,48 +86,49 @@ class Avatar extends StatelessWidget { ), ), ), - PresenceBuilder( - client: client, - userId: presenceUserId, - builder: (context, presence) { - if (presence == null || - (presence.presence == PresenceType.offline && - presence.lastActiveTimestamp == null)) { - return const SizedBox.shrink(); - } - final dotColor = presence.presence.isOnline - ? Colors.green - : presence.presence.isUnavailable - ? Colors.orange - : Colors.grey; - return Positioned( - bottom: -3, - right: -3, - child: Container( - width: 16, - height: 16, - decoration: BoxDecoration( - color: presenceBackgroundColor ?? - Theme.of(context).colorScheme.surface, - borderRadius: BorderRadius.circular(32), - ), - alignment: Alignment.center, + if (presenceUserId != null) + PresenceBuilder( + client: client, + userId: presenceUserId, + builder: (context, presence) { + if (presence == null || + (presence.presence == PresenceType.offline && + presence.lastActiveTimestamp == null)) { + return const SizedBox.shrink(); + } + final dotColor = presence.presence.isOnline + ? Colors.green + : presence.presence.isUnavailable + ? Colors.orange + : Colors.grey; + return Positioned( + bottom: -3, + right: -3, child: Container( - width: 10, - height: 10, + width: 16, + height: 16, decoration: BoxDecoration( - color: dotColor, - borderRadius: BorderRadius.circular(16), - border: Border.all( - width: 1, - color: Theme.of(context).colorScheme.surface, + color: presenceBackgroundColor ?? + Theme.of(context).colorScheme.surface, + borderRadius: BorderRadius.circular(32), + ), + alignment: Alignment.center, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: dotColor, + borderRadius: BorderRadius.circular(16), + border: Border.all( + width: 1, + color: Theme.of(context).colorScheme.surface, + ), ), ), ), - ), - ); - }, - ), + ); + }, + ), ], ); if (onTap == null) return container; diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index a6f4c8bdf..c270f120a 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -3,13 +3,11 @@ import 'package:flutter/material.dart'; class TwoColumnLayout extends StatelessWidget { final Widget mainView; final Widget sideView; - final bool displayNavigationRail; const TwoColumnLayout({ super.key, required this.mainView, required this.sideView, - required this.displayNavigationRail, }); @override Widget build(BuildContext context) { @@ -20,7 +18,7 @@ class TwoColumnLayout extends StatelessWidget { Container( clipBehavior: Clip.antiAlias, decoration: const BoxDecoration(), - width: 360.0 + (displayNavigationRail ? 64 : 0), + width: 384.0, child: mainView, ), Container( diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 4de23a2f5..581e3ccff 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -433,10 +433,6 @@ class MatrixState extends State with WidgetsBindingObserver { store.getBool(SettingKeys.hideUnimportantStateEvents) ?? AppConfig.hideUnimportantStateEvents; - AppConfig.separateChatTypes = - store.getBool(SettingKeys.separateChatTypes) ?? - AppConfig.separateChatTypes; - AppConfig.autoplayImages = store.getBool(SettingKeys.autoplayImages) ?? AppConfig.autoplayImages; diff --git a/linux/my_application.cc b/linux/my_application.cc index c185bcd78..0abe77c60 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -60,7 +60,7 @@ static void my_application_activate(GApplication* application) { gtk_window_set_title(window, "FluffyChat"); } - gtk_window_set_default_size(window, 864, 680); + gtk_window_set_default_size(window, 800, 600); gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); From 254f21ce00251be883c7aae1fdfc1aafa868252b Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:18:15 +0200 Subject: [PATCH 002/106] chore: Follow up new spaces design --- lib/pages/chat_list/chat_list.dart | 2 +- lib/pages/chat_list/chat_list_body.dart | 26 ++---- lib/pages/chat_list/chat_list_item.dart | 118 +++++++++++++++--------- lib/pages/chat_list/chat_list_view.dart | 4 + lib/widgets/avatar.dart | 7 +- 5 files changed, 90 insertions(+), 67 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 9181b1dff..28e78dfe6 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -200,7 +200,7 @@ class ChatListController extends State if (result.error != null) return; } - void onChatTap(Room room, BuildContext context) async { + void onChatTap(Room room) async { if (room.isSpace) { setActiveSpace(room.id); return; diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index a6526989b..fd063ddba 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -32,7 +32,7 @@ class ChatListViewBody extends StatelessWidget { return SpaceView( spaceId: activeSpace, onBack: controller.clearActiveSpace, - onChatTab: (room) => controller.onChatTap(room, context), + onChatTab: (room) => controller.onChatTap(room), onChatContext: (room) => controller.chatContextAction(room), activeChat: controller.activeChat, toParentSpace: controller.setActiveSpace, @@ -62,17 +62,15 @@ class ChatListViewBody extends StatelessWidget { builder: (context, _) { final rooms = controller.filteredRooms; - final spaces = rooms.where((r) => r.isSpace); + final spaces = client.rooms.where((r) => r.isSpace); final spaceDelegateCandidates = {}; for (final space in spaces) { - spaceDelegateCandidates[space.id] = space; for (final spaceChild in space.spaceChildren) { final roomId = spaceChild.roomId; if (roomId == null) continue; spaceDelegateCandidates[roomId] = space; } } - final spaceDelegates = {}; return SafeArea( child: CustomScrollView( @@ -298,26 +296,14 @@ class ChatListViewBody extends StatelessWidget { SliverList.builder( itemCount: rooms.length, itemBuilder: (BuildContext context, int i) { - var room = rooms[i]; - if (controller.activeFilter != ActiveFilter.groups) { - final parent = room.isSpace - ? room - : spaceDelegateCandidates[room.id]; - if (parent != null) { - if (spaceDelegates.contains(parent.id)) { - return const SizedBox.shrink(); - } - spaceDelegates.add(parent.id); - room = parent; - } - } - + final room = rooms[i]; + final space = spaceDelegateCandidates[room.id]; return ChatListItem( room, - lastEventRoom: rooms[i], + space: space, key: Key('chat_list_item_${room.id}'), filter: filter, - onTap: () => controller.onChatTap(room, context), + onTap: () => controller.onChatTap(room), onLongPress: () => controller.chatContextAction(room), activeChat: controller.activeChat == room.id, ); diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 7bf5f6b52..2fcce1839 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -17,7 +17,7 @@ enum ArchivedRoomAction { delete, rejoin } class ChatListItem extends StatelessWidget { final Room room; - final Room? lastEventRoom; + final Room? space; final bool activeChat; final void Function()? onLongPress; final void Function()? onForget; @@ -31,7 +31,7 @@ class ChatListItem extends StatelessWidget { this.onLongPress, this.onForget, this.filter, - this.lastEventRoom, + this.space, super.key, }); @@ -64,21 +64,19 @@ class ChatListItem extends StatelessWidget { @override Widget build(BuildContext context) { final isMuted = room.pushRuleState != PushRuleState.notify; - final lastEventRoom = this.lastEventRoom ?? room; - final typingText = lastEventRoom.getLocalizedTypingText(context); - final lastEvent = lastEventRoom.lastEvent; + final typingText = room.getLocalizedTypingText(context); + final lastEvent = room.lastEvent; final ownMessage = lastEvent?.senderId == room.client.userID; - final unread = - lastEventRoom.isUnread || lastEventRoom.membership == Membership.invite; + final unread = room.isUnread || room.membership == Membership.invite; final theme = Theme.of(context); final directChatMatrixId = room.directChatMatrixID; final isDirectChat = directChatMatrixId != null; - final unreadBubbleSize = unread || lastEventRoom.hasNewMessages - ? lastEventRoom.notificationCount > 0 + final unreadBubbleSize = unread || room.hasNewMessages + ? room.notificationCount > 0 ? 20.0 : 14.0 : 0.0; - final hasNotifications = lastEventRoom.notificationCount > 0; + final hasNotifications = room.notificationCount > 0; final backgroundColor = activeChat ? theme.colorScheme.secondaryContainer : null; final displayname = room.getLocalizedDisplayname( @@ -92,6 +90,7 @@ class ChatListItem extends StatelessWidget { final needLastEventSender = lastEvent == null ? false : room.getState(EventTypes.RoomMember, lastEvent.senderId) == null; + final space = this.space; return Padding( padding: const EdgeInsets.symmetric( @@ -117,15 +116,67 @@ class ChatListItem extends StatelessWidget { duration: FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, scale: hovered ? 1.1 : 1.0, - child: Avatar( - borderRadius: room.isSpace - ? BorderRadius.circular(AppConfig.borderRadius / 3) - : null, - mxContent: room.avatar, - name: displayname, - presenceUserId: directChatMatrixId, - presenceBackgroundColor: backgroundColor, - onTap: onLongPress, + child: SizedBox( + width: Avatar.defaultSize, + height: Avatar.defaultSize, + child: Stack( + children: [ + if (space != null) + Positioned( + top: 0, + left: 0, + child: Avatar( + border: BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + mxContent: space.avatar, + size: Avatar.defaultSize * 0.75, + name: space.getLocalizedDisplayname(), + onTap: onLongPress, + ), + ), + Positioned( + bottom: 0, + right: 0, + child: Avatar( + border: space == null + ? room.isSpace + ? BorderSide( + width: 0, + color: Theme.of(context) + .colorScheme + .outline, + ) + : null + : BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context) + .colorScheme + .surface, + ), + borderRadius: room.isSpace + ? BorderRadius.circular( + AppConfig.borderRadius / 4, + ) + : null, + mxContent: room.avatar, + size: space != null + ? Avatar.defaultSize * 0.75 + : Avatar.defaultSize, + name: displayname, + presenceUserId: directChatMatrixId, + presenceBackgroundColor: backgroundColor, + onTap: onLongPress, + ), + ), + ], + ), ), ), ), @@ -205,20 +256,6 @@ class ChatListItem extends StatelessWidget { subtitle: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - if (room.isSpace) ...[ - room.id != lastEventRoom.id && - lastEventRoom.isUnreadOrInvited - ? Avatar( - mxContent: lastEventRoom.avatar, - name: lastEventRoom.name, - size: 18, - ) - : const Icon( - Icons.workspaces_outlined, - size: 18, - ), - const SizedBox(width: 4), - ], if (typingText.isEmpty && ownMessage && room.lastEvent!.status.isSending) ...[ @@ -243,7 +280,7 @@ class ChatListItem extends StatelessWidget { ), ), Expanded( - child: room.isSpace && !lastEventRoom.isUnreadOrInvited + child: room.isSpace && room.membership == Membership.join ? Text( L10n.of(context)!.countChatsAndCountParticipants( room.spaceChildren.length.toString(), @@ -297,10 +334,9 @@ class ChatListItem extends StatelessWidget { maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( - fontWeight: - unread || lastEventRoom.hasNewMessages - ? FontWeight.bold - : null, + fontWeight: unread || room.hasNewMessages + ? FontWeight.bold + : null, color: theme.colorScheme.onSurfaceVariant, decoration: room.lastEvent?.redacted == true ? TextDecoration.lineThrough @@ -318,9 +354,7 @@ class ChatListItem extends StatelessWidget { width: !hasNotifications && !unread && !room.hasNewMessages ? 0 : (unreadBubbleSize - 9) * - lastEventRoom.notificationCount - .toString() - .length + + room.notificationCount.toString().length + 9, decoration: BoxDecoration( color: room.highlightCount > 0 || @@ -335,7 +369,7 @@ class ChatListItem extends StatelessWidget { child: Center( child: hasNotifications ? Text( - lastEventRoom.notificationCount.toString(), + room.notificationCount.toString(), style: TextStyle( color: room.highlightCount > 0 ? Colors.white diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 798464693..81f765125 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -26,6 +26,10 @@ class ChatListView extends StatelessWidget { controller.activeFilter == ActiveFilter.allChats, onPopInvoked: (pop) async { if (pop) return; + if (controller.activeSpaceId != null) { + controller.clearActiveSpace(); + return; + } final selMode = controller.selectMode; if (controller.isSearchMode) { controller.cancelSearch(); diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 180f3437a..0c280a88b 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -17,6 +17,7 @@ class Avatar extends StatelessWidget { final Color? presenceBackgroundColor; final BorderRadius? borderRadius; final IconData? icon; + final BorderSide? border; const Avatar({ this.mxContent, @@ -27,6 +28,7 @@ class Avatar extends StatelessWidget { this.presenceUserId, this.presenceBackgroundColor, this.borderRadius, + this.border, this.icon, super.key, }); @@ -67,10 +69,7 @@ class Avatar extends StatelessWidget { color: color, shape: RoundedRectangleBorder( borderRadius: borderRadius, - side: BorderSide( - width: 0, - color: Theme.of(context).dividerColor, - ), + side: border ?? BorderSide.none, ), clipBehavior: Clip.hardEdge, child: noPic From 64c56f889b870e7ef27f0d51204a004da7d72804 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:21:35 +0200 Subject: [PATCH 003/106] chore: Follow up join space invites --- lib/pages/chat_list/chat_list.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 28e78dfe6..d057cf181 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -201,10 +201,6 @@ class ChatListController extends State } void onChatTap(Room room) async { - if (room.isSpace) { - setActiveSpace(room.id); - return; - } if (room.membership == Membership.invite) { final inviterId = room.getState(EventTypes.RoomMember, room.client.userID!)?.senderId; @@ -275,6 +271,10 @@ class ChatListController extends State return; } + if (room.isSpace) { + setActiveSpace(room.id); + return; + } // Share content into this room final shareContent = Matrix.of(context).shareContent; if (shareContent != null) { From 7b0e0404c06faa5f78dfae6e65a36c1dd3deed39 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:39:12 +0200 Subject: [PATCH 004/106] chore: Follow up select chats --- assets/l10n/intl_en.arb | 7 ++++++- lib/pages/chat_list/chat_list.dart | 19 +++++++++++++------ lib/pages/chat_list/chat_list_body.dart | 8 +++++--- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index ab0ba910d..904b06c9c 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2705,5 +2705,10 @@ "restricted": "Restricted", "@restricted": {}, "knockRestricted": "Knock restricted", - "@knockRestricted": {} + "@knockRestricted": {}, + "goToSpace": "Go to space: {space}", + "@goToSpace": { + "type": "text", + "space": {} + } } diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index d057cf181..7084a082d 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -612,19 +612,22 @@ class ChatListController extends State super.dispose(); } - void chatContextAction(Room room) async { + void chatContextAction(Room room, [Room? space]) async { final action = await showModalActionSheet( context: context, - title: room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)), actions: [ + if (space != null) + SheetAction( + key: ChatContextAction.goToSpace, + icon: Icons.workspaces_outlined, + label: L10n.of(context)!.goToSpace(space.getLocalizedDisplayname()), + ), SheetAction( key: ChatContextAction.markUnread, icon: room.markedUnread ? Icons.mark_as_unread : Icons.mark_as_unread_outlined, - label: room.markedUnread - ? L10n.of(context)!.markAsRead - : L10n.of(context)!.unread, + label: L10n.of(context)!.toggleUnread, ), SheetAction( key: ChatContextAction.favorite, @@ -656,8 +659,11 @@ class ChatListController extends State await showFutureLoadingDialog( context: context, - future: () { + future: () async { switch (action) { + case ChatContextAction.goToSpace: + setActiveSpace(space!.id); + return; case ChatContextAction.favorite: return room.setFavourite(!room.isFavourite); case ChatContextAction.markUnread: @@ -872,6 +878,7 @@ enum InviteActions { enum AddRoomType { chat, subspace } enum ChatContextAction { + goToSpace, favorite, markUnread, mute, diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index fd063ddba..0b9c00889 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -27,13 +27,15 @@ class ChatListViewBody extends StatelessWidget { @override Widget build(BuildContext context) { + final client = Matrix.of(context).client; final activeSpace = controller.activeSpaceId; if (activeSpace != null) { return SpaceView( spaceId: activeSpace, onBack: controller.clearActiveSpace, onChatTab: (room) => controller.onChatTap(room), - onChatContext: (room) => controller.chatContextAction(room), + onChatContext: (room) => + controller.chatContextAction(room, client.getRoomById(activeSpace)), activeChat: controller.activeChat, toParentSpace: controller.setActiveSpace, ); @@ -45,7 +47,6 @@ class ChatListViewBody extends StatelessWidget { .where((room) => room.roomType == 'm.space') .toList(); final userSearchResult = controller.userSearchResult; - final client = Matrix.of(context).client; const dummyChatCount = 4; final titleColor = Theme.of(context).textTheme.bodyLarge!.color!.withAlpha(100); @@ -304,7 +305,8 @@ class ChatListViewBody extends StatelessWidget { key: Key('chat_list_item_${room.id}'), filter: filter, onTap: () => controller.onChatTap(room), - onLongPress: () => controller.chatContextAction(room), + onLongPress: () => + controller.chatContextAction(room, space), activeChat: controller.activeChat == room.id, ); }, From 8a5cd9bf160299eb28df346e2e137e4ad5ca3fdc Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:45:02 +0200 Subject: [PATCH 005/106] chore: Follow up spaces ui --- lib/pages/chat_list/chat_list_body.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 0b9c00889..1d1705ca1 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -163,7 +163,13 @@ class ChatListViewBody extends StatelessWidget { ), shrinkWrap: true, scrollDirection: Axis.horizontal, - children: ActiveFilter.values + children: [ + ActiveFilter.allChats, + ActiveFilter.unread, + ActiveFilter.groups, + if (spaceDelegateCandidates.isNotEmpty) + ActiveFilter.spaces, + ] .map( (filter) => Padding( padding: From 942970e04970fac768e351722f97e514603ef870 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:47:01 +0200 Subject: [PATCH 006/106] chore: Follow up spaces design --- lib/pages/chat_list/chat_list_item.dart | 140 ++++++++++-------------- 1 file changed, 58 insertions(+), 82 deletions(-) diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 2fcce1839..3df2e01c4 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -108,96 +108,72 @@ class ChatListItem extends StatelessWidget { visualDensity: const VisualDensity(vertical: -0.5), contentPadding: const EdgeInsets.symmetric(horizontal: 8), onLongPress: onLongPress, - leading: Stack( - clipBehavior: Clip.none, - children: [ - HoverBuilder( - builder: (context, hovered) => AnimatedScale( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - scale: hovered ? 1.1 : 1.0, - child: SizedBox( - width: Avatar.defaultSize, - height: Avatar.defaultSize, - child: Stack( - children: [ - if (space != null) - Positioned( - top: 0, - left: 0, - child: Avatar( - border: BorderSide( + leading: HoverBuilder( + builder: (context, hovered) => AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered ? 1.1 : 1.0, + child: SizedBox( + width: Avatar.defaultSize, + height: Avatar.defaultSize, + child: Stack( + children: [ + if (space != null) + Positioned( + top: 0, + left: 0, + child: Avatar( + border: BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + mxContent: space.avatar, + size: Avatar.defaultSize * 0.75, + name: space.getLocalizedDisplayname(), + onTap: onLongPress, + ), + ), + Positioned( + bottom: 0, + right: 0, + child: Avatar( + border: space == null + ? room.isSpace + ? BorderSide( + width: 0, + color: Theme.of(context) + .colorScheme + .outline, + ) + : null + : BorderSide( width: 2, color: backgroundColor ?? Theme.of(context).colorScheme.surface, ), - borderRadius: BorderRadius.circular( + borderRadius: room.isSpace + ? BorderRadius.circular( AppConfig.borderRadius / 4, - ), - mxContent: space.avatar, - size: Avatar.defaultSize * 0.75, - name: space.getLocalizedDisplayname(), - onTap: onLongPress, - ), - ), - Positioned( - bottom: 0, - right: 0, - child: Avatar( - border: space == null - ? room.isSpace - ? BorderSide( - width: 0, - color: Theme.of(context) - .colorScheme - .outline, - ) - : null - : BorderSide( - width: 2, - color: backgroundColor ?? - Theme.of(context) - .colorScheme - .surface, - ), - borderRadius: room.isSpace - ? BorderRadius.circular( - AppConfig.borderRadius / 4, - ) - : null, - mxContent: room.avatar, - size: space != null - ? Avatar.defaultSize * 0.75 - : Avatar.defaultSize, - name: displayname, - presenceUserId: directChatMatrixId, - presenceBackgroundColor: backgroundColor, - onTap: onLongPress, - ), - ), - ], + ) + : null, + mxContent: room.avatar, + size: space != null + ? Avatar.defaultSize * 0.75 + : Avatar.defaultSize, + name: displayname, + presenceUserId: directChatMatrixId, + presenceBackgroundColor: backgroundColor, + onTap: onLongPress, + ), ), - ), + ], ), ), - Positioned( - bottom: -2, - right: -2, - child: AnimatedScale( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - scale: (hovered) ? 1.0 : 0.0, - child: Material( - color: backgroundColor, - borderRadius: BorderRadius.circular(16), - child: const Icon( - Icons.check_circle_outlined, - size: 18, - ), - ), - ), - ), - ], + ), ), title: Row( children: [ From 3bd7257249ec035d5b8f12746ebba329b3848014 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 13:57:29 +0200 Subject: [PATCH 007/106] chore: Follow up spaces ui --- lib/pages/chat_list/chat_list_body.dart | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 1d1705ca1..d2f90fc30 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -40,6 +40,16 @@ class ChatListViewBody extends StatelessWidget { toParentSpace: controller.setActiveSpace, ); } + final spaces = client.rooms.where((r) => r.isSpace); + final spaceDelegateCandidates = {}; + for (final space in spaces) { + for (final spaceChild in space.spaceChildren) { + final roomId = spaceChild.roomId; + if (roomId == null) continue; + spaceDelegateCandidates[roomId] = space; + } + } + final publicRooms = controller.roomSearchResult?.chunk .where((room) => room.roomType != 'm.space') .toList(); @@ -63,16 +73,6 @@ class ChatListViewBody extends StatelessWidget { builder: (context, _) { final rooms = controller.filteredRooms; - final spaces = client.rooms.where((r) => r.isSpace); - final spaceDelegateCandidates = {}; - for (final space in spaces) { - for (final spaceChild in space.spaceChildren) { - final roomId = spaceChild.roomId; - if (roomId == null) continue; - spaceDelegateCandidates[roomId] = space; - } - } - return SafeArea( child: CustomScrollView( controller: controller.scrollController, From 650f87b1d29fb7e85592aba08291390faf6a47cd Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 15:19:50 +0200 Subject: [PATCH 008/106] chore: Follow up spaces ui --- assets/l10n/intl_en.arb | 3 +- lib/pages/chat_list/chat_list.dart | 23 +- lib/pages/chat_list/chat_list_view.dart | 9 +- lib/pages/chat_list/space_view.dart | 568 ++++++++++++------------ 4 files changed, 305 insertions(+), 298 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 904b06c9c..6c6da498a 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2710,5 +2710,6 @@ "@goToSpace": { "type": "text", "space": {} - } + }, + "markAsUnread": "Mark as unread" } diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 7084a082d..6c8ebc755 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -619,7 +619,7 @@ class ChatListController extends State if (space != null) SheetAction( key: ChatContextAction.goToSpace, - icon: Icons.workspaces_outlined, + icon: Icons.chevron_right_outlined, label: L10n.of(context)!.goToSpace(space.getLocalizedDisplayname()), ), SheetAction( @@ -627,11 +627,13 @@ class ChatListController extends State icon: room.markedUnread ? Icons.mark_as_unread : Icons.mark_as_unread_outlined, - label: L10n.of(context)!.toggleUnread, + label: room.markedUnread + ? L10n.of(context)!.markAsRead + : L10n.of(context)!.markAsUnread, ), SheetAction( key: ChatContextAction.favorite, - icon: room.isFavourite ? Icons.pin : Icons.pin_outlined, + icon: room.isFavourite ? Icons.push_pin : Icons.push_pin_outlined, label: room.isFavourite ? L10n.of(context)!.unpin : L10n.of(context)!.pin, @@ -640,7 +642,7 @@ class ChatListController extends State key: ChatContextAction.mute, icon: room.pushRuleState == PushRuleState.notify ? Icons.notifications_off_outlined - : Icons.notifications, + : Icons.notifications_outlined, label: room.pushRuleState == PushRuleState.notify ? L10n.of(context)!.muteChat : L10n.of(context)!.unmuteChat, @@ -657,6 +659,19 @@ class ChatListController extends State if (action == null) return; if (!mounted) return; + if (action == ChatContextAction.leave) { + final confirmed = await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context)!.areYouSure, + okLabel: L10n.of(context)!.yes, + cancelLabel: L10n.of(context)!.no, + message: L10n.of(context)!.archiveRoomDescription, + ); + if (confirmed == OkCancelResult.cancel) return; + } + if (!mounted) return; + await showFutureLoadingDialog( context: context, future: () async { diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 81f765125..93fa8575b 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -22,14 +22,9 @@ class ChatListView extends StatelessWidget { final selectMode = controller.selectMode; return PopScope( canPop: controller.selectMode == SelectMode.normal && - !controller.isSearchMode && - controller.activeFilter == ActiveFilter.allChats, - onPopInvoked: (pop) async { + !controller.isSearchMode, + onPopInvoked: (pop) { if (pop) return; - if (controller.activeSpaceId != null) { - controller.clearActiveSpace(); - return; - } final selMode = controller.selectMode; if (controller.isSearchMode) { controller.cancelSearch(); diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 6459de1e8..8fe443bf1 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -165,316 +165,312 @@ class _SpaceViewState extends State { final room = Matrix.of(context).client.getRoomById(widget.spaceId); final displayname = room?.getLocalizedDisplayname() ?? L10n.of(context)!.nothingFound; - return Scaffold( - appBar: AppBar( - leading: Center( - child: CloseButton( - onPressed: widget.onBack, + return PopScope( + canPop: false, + onPopInvoked: (_) => widget.onBack(), + child: Scaffold( + appBar: AppBar( + leading: Center( + child: CloseButton( + onPressed: widget.onBack, + ), ), - ), - titleSpacing: 0, - title: ListTile( - contentPadding: EdgeInsets.zero, - leading: Avatar( - mxContent: room?.avatar, - name: displayname, - borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), - ), - title: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - subtitle: room == null - ? null - : Text( - L10n.of(context)!.countChatsAndCountParticipants( - room.spaceChildren.length, - room.summary.mJoinedMemberCount ?? 1, + titleSpacing: 0, + title: ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar( + mxContent: room?.avatar, + name: displayname, + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + title: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: room == null + ? null + : Text( + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length, + room.summary.mJoinedMemberCount ?? 1, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - actions: [ - PopupMenuButton( - onSelected: _onSpaceAction, - itemBuilder: (context) => [ - PopupMenuItem( - value: SpaceActions.settings, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.settings_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.settings), - ], - ), - ), - PopupMenuItem( - value: SpaceActions.invite, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.person_add_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.invite), - ], - ), - ), - PopupMenuItem( - value: SpaceActions.leave, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.delete_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.leave), - ], - ), - ), - ], ), - ], - ), - body: room == null - ? const Center( - child: Icon( - Icons.search_outlined, - size: 80, - ), - ) - : StreamBuilder( - stream: room.client.onSync.stream - .where((s) => s.hasRoomUpdate) - .rateLimit(const Duration(seconds: 1)), - builder: (context, snapshot) { - final joinedRooms = room.spaceChildren - .map((child) { - final roomId = child.roomId; - if (roomId == null) return null; - return room.client.getRoomById(roomId); - }) - .whereType() - .where((room) => room.membership != Membership.leave) - .toList(); - - // Sort rooms by last activity - joinedRooms.sort( - (b, a) => (a.lastEvent?.originServerTs ?? - DateTime.fromMillisecondsSinceEpoch(0)) - .compareTo( - b.lastEvent?.originServerTs ?? - DateTime.fromMillisecondsSinceEpoch(0), + actions: [ + PopupMenuButton( + onSelected: _onSpaceAction, + itemBuilder: (context) => [ + PopupMenuItem( + value: SpaceActions.settings, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.settings), + ], ), - ); + ), + PopupMenuItem( + value: SpaceActions.invite, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.person_add_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.invite), + ], + ), + ), + PopupMenuItem( + value: SpaceActions.leave, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.delete_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.leave), + ], + ), + ), + ], + ), + ], + ), + body: room == null + ? const Center( + child: Icon( + Icons.search_outlined, + size: 80, + ), + ) + : StreamBuilder( + stream: room.client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, snapshot) { + final childrenIds = room.spaceChildren + .map((c) => c.roomId) + .whereType() + .toSet(); - final joinedParents = room.spaceParents - .map((parent) { - final roomId = parent.roomId; - if (roomId == null) return null; - return room.client.getRoomById(roomId); - }) - .whereType() - .toList(); - final filter = _filterController.text.trim().toLowerCase(); - return CustomScrollView( - slivers: [ - SliverAppBar( - floating: true, - toolbarHeight: 72, - scrolledUnderElevation: 0, - backgroundColor: Colors.transparent, - automaticallyImplyLeading: false, - title: TextField( - controller: _filterController, - onChanged: (_) => setState(() {}), - textInputAction: TextInputAction.search, - decoration: InputDecoration( - fillColor: - Theme.of(context).colorScheme.secondaryContainer, - border: OutlineInputBorder( - borderSide: BorderSide.none, - borderRadius: BorderRadius.circular(99), - ), - contentPadding: EdgeInsets.zero, - hintText: L10n.of(context)!.search, - hintStyle: TextStyle( - color: Theme.of(context) + final joinedRooms = room.client.rooms + .where((room) => childrenIds.remove(room.id)) + .toList(); + + final joinedParents = room.spaceParents + .map((parent) { + final roomId = parent.roomId; + if (roomId == null) return null; + return room.client.getRoomById(roomId); + }) + .whereType() + .toList(); + final filter = _filterController.text.trim().toLowerCase(); + return CustomScrollView( + slivers: [ + SliverAppBar( + floating: true, + toolbarHeight: 72, + scrolledUnderElevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: TextField( + controller: _filterController, + onChanged: (_) => setState(() {}), + textInputAction: TextInputAction.search, + decoration: InputDecoration( + fillColor: Theme.of(context) .colorScheme - .onPrimaryContainer, - fontWeight: FontWeight.normal, - ), - floatingLabelBehavior: FloatingLabelBehavior.never, - prefixIcon: IconButton( - onPressed: () {}, - icon: Icon( - Icons.search_outlined, + .secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context)!.search, + hintStyle: TextStyle( color: Theme.of(context) .colorScheme .onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.search_outlined, + color: Theme.of(context) + .colorScheme + .onPrimaryContainer, + ), ), ), ), ), - ), - SliverList.builder( - itemCount: joinedParents.length, - itemBuilder: (context, i) { - final displayname = - joinedParents[i].getLocalizedDisplayname(); - return Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 1, - ), - child: Material( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - clipBehavior: Clip.hardEdge, - child: ListTile( - minVerticalPadding: 0, - leading: Icon( - Icons.adaptive.arrow_back_outlined, - size: 16, - ), - title: Row( - children: [ - Avatar( - mxContent: joinedParents[i].avatar, - name: displayname, - size: Avatar.defaultSize / 2, - borderRadius: BorderRadius.circular( - AppConfig.borderRadius / 4, - ), - ), - const SizedBox(width: 8), - Expanded(child: Text(displayname)), - ], - ), - onTap: () => - widget.toParentSpace(joinedParents[i].id), + SliverList.builder( + itemCount: joinedParents.length, + itemBuilder: (context, i) { + final displayname = + joinedParents[i].getLocalizedDisplayname(); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, ), - ), - ); - }, - ), - SliverList.builder( - itemCount: joinedRooms.length + 1, - itemBuilder: (context, i) { - if (i == 0) { - return SearchTitle( - title: L10n.of(context)!.joinedChats, - icon: const Icon(Icons.chat_outlined), - ); - } - i--; - final room = joinedRooms[i]; - return ChatListItem( - room, - filter: filter, - onTap: () => widget.onChatTab(room), - onLongPress: () => widget.onChatContext(room), - activeChat: widget.activeChat == room.id, - ); - }, - ), - SliverList.builder( - itemCount: _discoveredChildren.length + 2, - itemBuilder: (context, i) { - if (i == 0) { - return SearchTitle( - title: L10n.of(context)!.discover, - icon: const Icon(Icons.explore_outlined), - ); - } - i--; - if (i == _discoveredChildren.length) { - if (_noMoreRooms) { - return Padding( - padding: const EdgeInsets.all(12.0), - child: Center( - child: Text( - L10n.of(context)!.noMoreChatsFound, - style: const TextStyle(fontSize: 13), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + minVerticalPadding: 0, + leading: Icon( + Icons.adaptive.arrow_back_outlined, + size: 16, ), + title: Row( + children: [ + Avatar( + mxContent: joinedParents[i].avatar, + name: displayname, + size: Avatar.defaultSize / 2, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + ), + const SizedBox(width: 8), + Expanded(child: Text(displayname)), + ], + ), + onTap: () => + widget.toParentSpace(joinedParents[i].id), + ), + ), + ); + }, + ), + SliverList.builder( + itemCount: joinedRooms.length + 1, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.joinedChats, + icon: const Icon(Icons.chat_outlined), + ); + } + i--; + final room = joinedRooms[i]; + return ChatListItem( + room, + filter: filter, + onTap: () => widget.onChatTab(room), + onLongPress: () => widget.onChatContext(room), + activeChat: widget.activeChat == room.id, + ); + }, + ), + SliverList.builder( + itemCount: _discoveredChildren.length + 2, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.discover, + icon: const Icon(Icons.explore_outlined), + ); + } + i--; + if (i == _discoveredChildren.length) { + if (_noMoreRooms) { + return Padding( + padding: const EdgeInsets.all(12.0), + child: Center( + child: Text( + L10n.of(context)!.noMoreChatsFound, + style: const TextStyle(fontSize: 13), + ), + ), + ); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 2.0, + ), + child: TextButton( + onPressed: _isLoading ? null : _loadHierarchy, + child: _isLoading + ? LinearProgressIndicator( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ) + : Text(L10n.of(context)!.loadMore), ), ); } + final item = _discoveredChildren[i]; + final displayname = item.name ?? + item.canonicalAlias ?? + L10n.of(context)!.emptyChat; + if (!displayname.toLowerCase().contains(filter)) { + return const SizedBox.shrink(); + } return Padding( padding: const EdgeInsets.symmetric( - horizontal: 12.0, - vertical: 2.0, + horizontal: 8, + vertical: 1, ), - child: TextButton( - onPressed: _isLoading ? null : _loadHierarchy, - child: _isLoading - ? LinearProgressIndicator( - borderRadius: BorderRadius.circular( - AppConfig.borderRadius, + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + onTap: () => _joinChildRoom(item), + leading: Avatar( + mxContent: item.avatarUrl, + name: displayname, + borderRadius: item.roomType == 'm.space' + ? BorderRadius.circular( + AppConfig.borderRadius / 2, + ) + : null, + ), + title: Row( + children: [ + Expanded( + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, ), - ) - : Text(L10n.of(context)!.loadMore), + ), + const SizedBox(width: 8), + const Icon( + Icons.add_circle_outline_outlined, + ), + ], + ), + subtitle: Text( + item.topic ?? + L10n.of(context)!.countParticipants( + item.numJoinedMembers, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), ), ); - } - final item = _discoveredChildren[i]; - final displayname = item.name ?? - item.canonicalAlias ?? - L10n.of(context)!.emptyChat; - if (!displayname.toLowerCase().contains(filter)) { - return const SizedBox.shrink(); - } - return Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 1, - ), - child: Material( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - clipBehavior: Clip.hardEdge, - child: ListTile( - onTap: () => _joinChildRoom(item), - leading: Avatar( - mxContent: item.avatarUrl, - name: displayname, - borderRadius: item.roomType == 'm.space' - ? BorderRadius.circular( - AppConfig.borderRadius / 2, - ) - : null, - ), - title: Row( - children: [ - Expanded( - child: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - const SizedBox(width: 8), - const Icon(Icons.add_circle_outline_outlined), - ], - ), - subtitle: Text( - item.topic ?? - L10n.of(context)!.countParticipants( - item.numJoinedMembers, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - ), - ); - }, - ), - ], - ); - }, - ), + }, + ), + ], + ); + }, + ), + ), ); } } From cfdb86b7e97ef7a52d51c561305a81c99a726f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Fri, 12 Jul 2024 15:55:04 +0000 Subject: [PATCH 009/106] Translated using Weblate (Galician) Currently translated at 100.0% (634 of 634 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/gl/ --- assets/l10n/intl_gl.arb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_gl.arb b/assets/l10n/intl_gl.arb index 2fe2464f5..8a7ef7922 100644 --- a/assets/l10n/intl_gl.arb +++ b/assets/l10n/intl_gl.arb @@ -2708,5 +2708,9 @@ "restricted": "Non accesible", "@restricted": {}, "swipeRightToLeftToReply": "Despraza hacia a esquerda para responder", - "@swipeRightToLeftToReply": {} + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "falso", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + } } From d436aa7ff54d9a3efd07ad7e8f5ea11063c5aaf9 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 14 Jul 2024 21:12:44 +0000 Subject: [PATCH 010/106] Translated using Weblate (Croatian) Currently translated at 100.0% (634 of 634 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/hr/ --- assets/l10n/intl_hr.arb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_hr.arb b/assets/l10n/intl_hr.arb index a3f981b2d..3d6c84730 100644 --- a/assets/l10n/intl_hr.arb +++ b/assets/l10n/intl_hr.arb @@ -2708,5 +2708,9 @@ "count": {} }, "swipeRightToLeftToReply": "Za odgovaranje povuci prstom zdesna ulijevo", - "@swipeRightToLeftToReply": {} + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + } } From eb0ae28adc767460a1584791d8b05b50714a6951 Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 15 Jul 2024 13:26:06 +0000 Subject: [PATCH 011/106] Translated using Weblate (German) Currently translated at 99.6% (640 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/ --- assets/l10n/intl_de.arb | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/assets/l10n/intl_de.arb b/assets/l10n/intl_de.arb index 07dea5ae8..cb0c713d9 100644 --- a/assets/l10n/intl_de.arb +++ b/assets/l10n/intl_de.arb @@ -2,8 +2,8 @@ "@@locale": "de", "@@last_modified": "2021-08-14 12:41:10.119255", "alwaysUse24HourFormat": "true", - "@alwaysUse24HourFormat": { - "description": "Set to true to always display time of day in 24 hour format." + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." }, "about": "Über", "@about": { @@ -2710,5 +2710,22 @@ } }, "searchMore": "Weiter suchen ...", - "@searchMore": {} + "@searchMore": {}, + "unread": "Ungelesen", + "@unread": {}, + "noMoreChatsFound": "Keine weiteren Chats gefunden ...", + "@noMoreChatsFound": {}, + "joinedChats": "Beigetretene Chats", + "@joinedChats": {}, + "space": "Space", + "@space": {}, + "spaces": "Spaces", + "@spaces": {}, + "goToSpace": "Geh zum Space: {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "Als ungelesen markieren", + "@markAsUnread": {} } From 47d1165b45801ab9af612fb3a73bbcfe7e3a81ed Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 16:34:48 +0200 Subject: [PATCH 012/106] chore: Follow up chat list context menu --- lib/pages/chat_list/chat_list.dart | 166 ++++++-- lib/pages/chat_list/chat_list_body.dart | 74 ++-- lib/pages/chat_list/chat_list_item.dart | 495 ++++++++++++------------ lib/pages/chat_list/space_view.dart | 7 +- 4 files changed, 420 insertions(+), 322 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 6c8ebc755..06cb532d4 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -21,6 +21,7 @@ import 'package:fluffychat/pages/chat_list/chat_list_view.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/avatar.dart'; import '../../../utils/account_bundles.dart'; import '../../config/setting_keys.dart'; import '../../utils/matrix_sdk_extensions/matrix_file_extension.dart'; @@ -612,46 +613,130 @@ class ChatListController extends State super.dispose(); } - void chatContextAction(Room room, [Room? space]) async { - final action = await showModalActionSheet( - context: context, - actions: [ - if (space != null) - SheetAction( - key: ChatContextAction.goToSpace, - icon: Icons.chevron_right_outlined, - label: L10n.of(context)!.goToSpace(space.getLocalizedDisplayname()), + void chatContextAction( + Room room, + BuildContext posContext, [ + Room? space, + ]) async { + final overlay = + Overlay.of(posContext).context.findRenderObject() as RenderBox; + + final button = posContext.findRenderObject() as RenderBox; + + final position = RelativeRect.fromRect( + Rect.fromPoints( + button.localToGlobal(const Offset(0, -65), ancestor: overlay), + button.localToGlobal( + button.size.bottomRight(Offset.zero) + const Offset(-50, 0), + ancestor: overlay, + ), + ), + Offset.zero & overlay.size, + ); + + final displayname = + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)); + + final action = await showMenu( + context: posContext, + position: position, + items: [ + PopupMenuItem( + enabled: false, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Avatar( + mxContent: room.avatar, + size: Avatar.defaultSize / 2, + name: displayname, + ), + const SizedBox(width: 12), + Text(displayname), + ], ), - SheetAction( - key: ChatContextAction.markUnread, - icon: room.markedUnread - ? Icons.mark_as_unread - : Icons.mark_as_unread_outlined, - label: room.markedUnread - ? L10n.of(context)!.markAsRead - : L10n.of(context)!.markAsUnread, ), - SheetAction( - key: ChatContextAction.favorite, - icon: room.isFavourite ? Icons.push_pin : Icons.push_pin_outlined, - label: room.isFavourite - ? L10n.of(context)!.unpin - : L10n.of(context)!.pin, + const PopupMenuDivider(), + if (space != null) + PopupMenuItem( + value: ChatContextAction.goToSpace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.navigate_next_outlined), + const SizedBox(width: 12), + Expanded( + child: Text( + L10n.of(context)! + .goToSpace(space.getLocalizedDisplayname()), + ), + ), + ], + ), + ), + PopupMenuItem( + value: ChatContextAction.mute, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + room.pushRuleState == PushRuleState.notify + ? Icons.notifications_off_outlined + : Icons.notifications_off, + ), + const SizedBox(width: 12), + Text( + room.pushRuleState == PushRuleState.notify + ? L10n.of(context)!.muteChat + : L10n.of(context)!.unmuteChat, + ), + ], + ), ), - SheetAction( - key: ChatContextAction.mute, - icon: room.pushRuleState == PushRuleState.notify - ? Icons.notifications_off_outlined - : Icons.notifications_outlined, - label: room.pushRuleState == PushRuleState.notify - ? L10n.of(context)!.muteChat - : L10n.of(context)!.unmuteChat, + PopupMenuItem( + value: ChatContextAction.markUnread, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + room.markedUnread + ? Icons.mark_as_unread + : Icons.mark_as_unread_outlined, + ), + const SizedBox(width: 12), + Text( + room.markedUnread + ? L10n.of(context)!.markAsRead + : L10n.of(context)!.markAsUnread, + ), + ], + ), ), - SheetAction( - isDestructiveAction: true, - key: ChatContextAction.leave, - icon: Icons.delete_outlined, - label: L10n.of(context)!.leave, + PopupMenuItem( + value: ChatContextAction.favorite, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(room.isFavourite ? Icons.push_pin : Icons.push_pin_outlined), + const SizedBox(width: 12), + Text( + room.isFavourite + ? L10n.of(context)!.unpin + : L10n.of(context)!.pin, + ), + ], + ), + ), + PopupMenuItem( + value: ChatContextAction.leave, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.delete_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.leave), + ], + ), ), ], ); @@ -659,14 +744,20 @@ class ChatListController extends State if (action == null) return; if (!mounted) return; + if (action == ChatContextAction.goToSpace) { + setActiveSpace(space!.id); + return; + } + if (action == ChatContextAction.leave) { final confirmed = await showOkCancelAlertDialog( useRootNavigator: false, context: context, title: L10n.of(context)!.areYouSure, - okLabel: L10n.of(context)!.yes, + okLabel: L10n.of(context)!.leave, cancelLabel: L10n.of(context)!.no, message: L10n.of(context)!.archiveRoomDescription, + isDestructiveAction: true, ); if (confirmed == OkCancelResult.cancel) return; } @@ -677,7 +768,6 @@ class ChatListController extends State future: () async { switch (action) { case ChatContextAction.goToSpace: - setActiveSpace(space!.id); return; case ChatContextAction.favorite: return room.setFavourite(!room.isFavourite); diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index d2f90fc30..4b17ad6b5 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -14,6 +14,7 @@ import 'package:fluffychat/pages/user_bottom_sheet/user_bottom_sheet.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/hover_builder.dart'; import 'package:fluffychat/widgets/public_room_bottom_sheet.dart'; import '../../config/themes.dart'; import '../../widgets/connection_status_header.dart'; @@ -34,8 +35,8 @@ class ChatListViewBody extends StatelessWidget { spaceId: activeSpace, onBack: controller.clearActiveSpace, onChatTab: (room) => controller.onChatTap(room), - onChatContext: (room) => - controller.chatContextAction(room, client.getRoomById(activeSpace)), + onChatContext: (room, context) => + controller.chatContextAction(room, context), activeChat: controller.activeChat, toParentSpace: controller.setActiveSpace, ); @@ -174,45 +175,54 @@ class ChatListViewBody extends StatelessWidget { (filter) => Padding( padding: const EdgeInsets.symmetric(horizontal: 4), - child: InkWell( - borderRadius: BorderRadius.circular( - AppConfig.borderRadius, - ), - onTap: () => - controller.setActiveFilter(filter), - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, - ), - decoration: BoxDecoration( - color: filter == controller.activeFilter - ? Theme.of(context) - .colorScheme - .primary - : Theme.of(context) - .colorScheme - .secondaryContainer, + child: HoverBuilder( + builder: (context, hovered) => + AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered ? 1.1 : 1.0, + child: InkWell( borderRadius: BorderRadius.circular( AppConfig.borderRadius, ), - ), - alignment: Alignment.center, - child: Text( - filter.toLocalizedString(context), - style: TextStyle( - fontWeight: - filter == controller.activeFilter + onTap: () => + controller.setActiveFilter(filter), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: filter == + controller.activeFilter + ? Theme.of(context) + .colorScheme + .primary + : Theme.of(context) + .colorScheme + .secondaryContainer, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + alignment: Alignment.center, + child: Text( + filter.toLocalizedString(context), + style: TextStyle( + fontWeight: filter == + controller.activeFilter ? FontWeight.bold : FontWeight.normal, - color: - filter == controller.activeFilter + color: filter == + controller.activeFilter ? Theme.of(context) .colorScheme .onPrimary : Theme.of(context) .colorScheme .onSecondaryContainer, + ), + ), ), ), ), @@ -311,8 +321,8 @@ class ChatListViewBody extends StatelessWidget { key: Key('chat_list_item_${room.id}'), filter: filter, onTap: () => controller.onChatTap(room), - onLongPress: () => - controller.chatContextAction(room, space), + onLongPress: (context) => + controller.chatContextAction(room, context, space), activeChat: controller.activeChat == room.id, ); }, diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 3df2e01c4..ed46b03f7 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -19,7 +19,7 @@ class ChatListItem extends StatelessWidget { final Room room; final Room? space; final bool activeChat; - final void Function()? onLongPress; + final void Function(BuildContext context)? onLongPress; final void Function()? onForget; final void Function() onTap; final String? filter; @@ -103,271 +103,266 @@ class ChatListItem extends StatelessWidget { color: backgroundColor, child: FutureBuilder( future: room.loadHeroUsers(), - builder: (context, snapshot) => HoverBuilder( - builder: (context, hovered) => ListTile( - visualDensity: const VisualDensity(vertical: -0.5), - contentPadding: const EdgeInsets.symmetric(horizontal: 8), - onLongPress: onLongPress, - leading: HoverBuilder( - builder: (context, hovered) => AnimatedScale( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - scale: hovered ? 1.1 : 1.0, - child: SizedBox( - width: Avatar.defaultSize, - height: Avatar.defaultSize, - child: Stack( - children: [ - if (space != null) - Positioned( - top: 0, - left: 0, - child: Avatar( - border: BorderSide( - width: 2, - color: backgroundColor ?? - Theme.of(context).colorScheme.surface, - ), - borderRadius: BorderRadius.circular( - AppConfig.borderRadius / 4, - ), - mxContent: space.avatar, - size: Avatar.defaultSize * 0.75, - name: space.getLocalizedDisplayname(), - onTap: onLongPress, - ), - ), + builder: (context, snapshot) => ListTile( + visualDensity: const VisualDensity(vertical: -0.5), + contentPadding: const EdgeInsets.symmetric(horizontal: 8), + onLongPress: () => onLongPress?.call(context), + leading: HoverBuilder( + builder: (context, hovered) => AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered ? 1.1 : 1.0, + child: SizedBox( + width: Avatar.defaultSize, + height: Avatar.defaultSize, + child: Stack( + children: [ + if (space != null) Positioned( - bottom: 0, - right: 0, + top: 0, + left: 0, child: Avatar( - border: space == null - ? room.isSpace - ? BorderSide( - width: 0, - color: Theme.of(context) - .colorScheme - .outline, - ) - : null - : BorderSide( - width: 2, - color: backgroundColor ?? - Theme.of(context).colorScheme.surface, - ), - borderRadius: room.isSpace - ? BorderRadius.circular( - AppConfig.borderRadius / 4, - ) - : null, - mxContent: room.avatar, - size: space != null - ? Avatar.defaultSize * 0.75 - : Avatar.defaultSize, - name: displayname, - presenceUserId: directChatMatrixId, - presenceBackgroundColor: backgroundColor, - onTap: onLongPress, + border: BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + mxContent: space.avatar, + size: Avatar.defaultSize * 0.75, + name: space.getLocalizedDisplayname(), + onTap: () => onLongPress?.call(context), ), ), - ], - ), + Positioned( + bottom: 0, + right: 0, + child: Avatar( + border: space == null + ? room.isSpace + ? BorderSide( + width: 0, + color: + Theme.of(context).colorScheme.outline, + ) + : null + : BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: room.isSpace + ? BorderRadius.circular( + AppConfig.borderRadius / 4, + ) + : null, + mxContent: room.avatar, + size: space != null + ? Avatar.defaultSize * 0.75 + : Avatar.defaultSize, + name: displayname, + presenceUserId: directChatMatrixId, + presenceBackgroundColor: backgroundColor, + onTap: () => onLongPress?.call(context), + ), + ), + ], ), ), ), - title: Row( - children: [ - Expanded( - child: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - softWrap: false, - style: unread || room.hasNewMessages - ? const TextStyle(fontWeight: FontWeight.bold) - : null, - ), + ), + title: Row( + children: [ + Expanded( + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + softWrap: false, + style: unread || room.hasNewMessages + ? const TextStyle(fontWeight: FontWeight.bold) + : null, ), - if (isMuted) - const Padding( - padding: EdgeInsets.only(left: 4.0), - child: Icon( - Icons.notifications_off_outlined, - size: 16, - ), - ), - if (room.isFavourite || room.membership == Membership.invite) - Padding( - padding: EdgeInsets.only( - right: hasNotifications ? 4.0 : 0.0, - ), - child: Icon( - Icons.push_pin, - size: 16, - color: theme.colorScheme.primary, - ), - ), - if (!room.isSpace && - lastEvent != null && - room.membership != Membership.invite) - Padding( - padding: const EdgeInsets.only(left: 4.0), - child: Text( - lastEvent.originServerTs.localizedTimeShort(context), - style: TextStyle( - fontSize: 13, - color: unread - ? theme.colorScheme.secondary - : theme.textTheme.bodyMedium!.color, - ), - ), - ), - if (room.isSpace) - const Icon( - Icons.arrow_circle_right_outlined, - size: 18, - ), - ], - ), - subtitle: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (typingText.isEmpty && - ownMessage && - room.lastEvent!.status.isSending) ...[ - const SizedBox( - width: 16, - height: 16, - child: CircularProgressIndicator.adaptive(strokeWidth: 2), - ), - const SizedBox(width: 4), - ], - AnimatedContainer( - width: typingText.isEmpty ? 0 : 18, - clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration(), - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - padding: const EdgeInsets.only(right: 4), + ), + if (isMuted) + const Padding( + padding: EdgeInsets.only(left: 4.0), child: Icon( - Icons.edit_outlined, - color: theme.colorScheme.secondary, - size: 14, + Icons.notifications_off_outlined, + size: 16, ), ), - Expanded( - child: room.isSpace && room.membership == Membership.join + if (room.isFavourite || room.membership == Membership.invite) + Padding( + padding: EdgeInsets.only( + right: hasNotifications ? 4.0 : 0.0, + ), + child: Icon( + Icons.push_pin, + size: 16, + color: theme.colorScheme.primary, + ), + ), + if (!room.isSpace && + lastEvent != null && + room.membership != Membership.invite) + Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Text( + lastEvent.originServerTs.localizedTimeShort(context), + style: TextStyle( + fontSize: 13, + color: unread + ? theme.colorScheme.secondary + : theme.textTheme.bodyMedium!.color, + ), + ), + ), + if (room.isSpace) + const Icon( + Icons.arrow_circle_right_outlined, + size: 18, + ), + ], + ), + subtitle: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (typingText.isEmpty && + ownMessage && + room.lastEvent!.status.isSending) ...[ + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ), + const SizedBox(width: 4), + ], + AnimatedContainer( + width: typingText.isEmpty ? 0 : 18, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + padding: const EdgeInsets.only(right: 4), + child: Icon( + Icons.edit_outlined, + color: theme.colorScheme.secondary, + size: 14, + ), + ), + Expanded( + child: room.isSpace && room.membership == Membership.join + ? Text( + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length.toString(), + (room.summary.mJoinedMemberCount ?? 1).toString(), + ), + ) + : typingText.isNotEmpty + ? Text( + typingText, + style: TextStyle( + color: theme.colorScheme.primary, + ), + maxLines: 1, + softWrap: false, + ) + : FutureBuilder( + key: ValueKey( + '${lastEvent?.eventId}_${lastEvent?.type}', + ), + future: needLastEventSender + ? lastEvent.calcLocalizedBody( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ) + : null, + initialData: lastEvent?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ), + builder: (context, snapshot) => Text( + room.membership == Membership.invite + ? isDirectChat + ? L10n.of(context)!.invitePrivateChat + : L10n.of(context)!.inviteGroupChat + : snapshot.data ?? + L10n.of(context)!.emptyChat, + softWrap: false, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: unread || room.hasNewMessages + ? FontWeight.bold + : null, + color: theme.colorScheme.onSurfaceVariant, + decoration: room.lastEvent?.redacted == true + ? TextDecoration.lineThrough + : null, + ), + ), + ), + ), + const SizedBox(width: 8), + AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + padding: const EdgeInsets.symmetric(horizontal: 7), + height: unreadBubbleSize, + width: !hasNotifications && !unread && !room.hasNewMessages + ? 0 + : (unreadBubbleSize - 9) * + room.notificationCount.toString().length + + 9, + decoration: BoxDecoration( + color: room.highlightCount > 0 || + room.membership == Membership.invite + ? Colors.red + : hasNotifications || room.markedUnread + ? theme.colorScheme.primary + : theme.colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + ), + child: Center( + child: hasNotifications ? Text( - L10n.of(context)!.countChatsAndCountParticipants( - room.spaceChildren.length.toString(), - (room.summary.mJoinedMemberCount ?? 1).toString(), + room.notificationCount.toString(), + style: TextStyle( + color: room.highlightCount > 0 + ? Colors.white + : hasNotifications + ? theme.colorScheme.onPrimary + : theme.colorScheme.onPrimaryContainer, + fontSize: 13, ), ) - : typingText.isNotEmpty - ? Text( - typingText, - style: TextStyle( - color: theme.colorScheme.primary, - ), - maxLines: 1, - softWrap: false, - ) - : FutureBuilder( - key: ValueKey( - '${lastEvent?.eventId}_${lastEvent?.type}', - ), - future: needLastEventSender - ? lastEvent.calcLocalizedBody( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: (!isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId), - ) - : null, - initialData: - lastEvent?.calcLocalizedBodyFallback( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: (!isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId), - ), - builder: (context, snapshot) => Text( - room.membership == Membership.invite - ? isDirectChat - ? L10n.of(context)!.invitePrivateChat - : L10n.of(context)!.inviteGroupChat - : snapshot.data ?? - L10n.of(context)!.emptyChat, - softWrap: false, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontWeight: unread || room.hasNewMessages - ? FontWeight.bold - : null, - color: theme.colorScheme.onSurfaceVariant, - decoration: room.lastEvent?.redacted == true - ? TextDecoration.lineThrough - : null, - ), - ), - ), + : const SizedBox.shrink(), ), - const SizedBox(width: 8), - AnimatedContainer( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - padding: const EdgeInsets.symmetric(horizontal: 7), - height: unreadBubbleSize, - width: !hasNotifications && !unread && !room.hasNewMessages - ? 0 - : (unreadBubbleSize - 9) * - room.notificationCount.toString().length + - 9, - decoration: BoxDecoration( - color: room.highlightCount > 0 || - room.membership == Membership.invite - ? Colors.red - : hasNotifications || room.markedUnread - ? theme.colorScheme.primary - : theme.colorScheme.primaryContainer, - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - ), - child: Center( - child: hasNotifications - ? Text( - room.notificationCount.toString(), - style: TextStyle( - color: room.highlightCount > 0 - ? Colors.white - : hasNotifications - ? theme.colorScheme.onPrimary - : theme.colorScheme.onPrimaryContainer, - fontSize: 13, - ), - ) - : const SizedBox.shrink(), - ), - ), - ], - ), - onTap: onTap, - trailing: onForget == null - ? null - : IconButton( - icon: const Icon(Icons.delete_outlined), - onPressed: onForget, - ), + ), + ], ), + onTap: onTap, + trailing: onForget == null + ? null + : IconButton( + icon: const Icon(Icons.delete_outlined), + onPressed: onForget, + ), ), ), ), diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 8fe443bf1..3a7fdcad0 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -20,7 +20,7 @@ class SpaceView extends StatefulWidget { final void Function() onBack; final void Function(String spaceId) toParentSpace; final void Function(Room room) onChatTab; - final void Function(Room room) onChatContext; + final void Function(Room room, BuildContext context) onChatContext; final String? activeChat; const SpaceView({ @@ -367,7 +367,10 @@ class _SpaceViewState extends State { room, filter: filter, onTap: () => widget.onChatTab(room), - onLongPress: () => widget.onChatContext(room), + onLongPress: (context) => widget.onChatContext( + room, + context, + ), activeChat: widget.activeChat == room.id, ); }, From 1b95694a5848c8b1503f963550dced896cc358a6 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 16:53:09 +0200 Subject: [PATCH 013/106] chore: Follow up spaces design --- lib/pages/chat_list/chat_list.dart | 6 +++++- lib/pages/chat_list/chat_list_item.dart | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 06cb532d4..8ee1870b5 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -652,7 +652,11 @@ class ChatListController extends State name: displayname, ), const SizedBox(width: 12), - Text(displayname), + Text( + displayname, + style: + TextStyle(color: Theme.of(context).colorScheme.onSurface), + ), ], ), ), diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index ed46b03f7..0217e0c97 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -168,6 +168,19 @@ class ChatListItem extends StatelessWidget { onTap: () => onLongPress?.call(context), ), ), + if (hovered) + Positioned( + top: -2, + right: -2, + child: Material( + color: backgroundColor, + borderRadius: BorderRadius.circular(16), + child: const Icon( + Icons.arrow_drop_down_circle_outlined, + size: 18, + ), + ), + ), ], ), ), From 54ba4544af791e3ab4dbb603277e3dfffe4978c1 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 16:57:19 +0200 Subject: [PATCH 014/106] chore: Follow up listtilehover --- lib/pages/chat_list/chat_list_item.dart | 511 ++++++++++++------------ 1 file changed, 258 insertions(+), 253 deletions(-) diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 0217e0c97..8036aee62 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -103,279 +103,284 @@ class ChatListItem extends StatelessWidget { color: backgroundColor, child: FutureBuilder( future: room.loadHeroUsers(), - builder: (context, snapshot) => ListTile( - visualDensity: const VisualDensity(vertical: -0.5), - contentPadding: const EdgeInsets.symmetric(horizontal: 8), - onLongPress: () => onLongPress?.call(context), - leading: HoverBuilder( - builder: (context, hovered) => AnimatedScale( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - scale: hovered ? 1.1 : 1.0, - child: SizedBox( - width: Avatar.defaultSize, - height: Avatar.defaultSize, - child: Stack( - children: [ - if (space != null) + builder: (context, snapshot) => HoverBuilder( + builder: (context, listTileHovered) => ListTile( + visualDensity: const VisualDensity(vertical: -0.5), + contentPadding: const EdgeInsets.symmetric(horizontal: 8), + onLongPress: () => onLongPress?.call(context), + leading: HoverBuilder( + builder: (context, hovered) => AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered ? 1.1 : 1.0, + child: SizedBox( + width: Avatar.defaultSize, + height: Avatar.defaultSize, + child: Stack( + children: [ + if (space != null) + Positioned( + top: 0, + left: 0, + child: Avatar( + border: BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), + mxContent: space.avatar, + size: Avatar.defaultSize * 0.75, + name: space.getLocalizedDisplayname(), + onTap: () => onLongPress?.call(context), + ), + ), Positioned( - top: 0, - left: 0, + bottom: 0, + right: 0, child: Avatar( - border: BorderSide( - width: 2, - color: backgroundColor ?? - Theme.of(context).colorScheme.surface, - ), - borderRadius: BorderRadius.circular( - AppConfig.borderRadius / 4, - ), - mxContent: space.avatar, - size: Avatar.defaultSize * 0.75, - name: space.getLocalizedDisplayname(), + border: space == null + ? room.isSpace + ? BorderSide( + width: 0, + color: Theme.of(context) + .colorScheme + .outline, + ) + : null + : BorderSide( + width: 2, + color: backgroundColor ?? + Theme.of(context).colorScheme.surface, + ), + borderRadius: room.isSpace + ? BorderRadius.circular( + AppConfig.borderRadius / 4, + ) + : null, + mxContent: room.avatar, + size: space != null + ? Avatar.defaultSize * 0.75 + : Avatar.defaultSize, + name: displayname, + presenceUserId: directChatMatrixId, + presenceBackgroundColor: backgroundColor, onTap: () => onLongPress?.call(context), ), ), - Positioned( - bottom: 0, - right: 0, - child: Avatar( - border: space == null - ? room.isSpace - ? BorderSide( - width: 0, - color: - Theme.of(context).colorScheme.outline, - ) - : null - : BorderSide( - width: 2, - color: backgroundColor ?? - Theme.of(context).colorScheme.surface, - ), - borderRadius: room.isSpace - ? BorderRadius.circular( - AppConfig.borderRadius / 4, - ) - : null, - mxContent: room.avatar, - size: space != null - ? Avatar.defaultSize * 0.75 - : Avatar.defaultSize, - name: displayname, - presenceUserId: directChatMatrixId, - presenceBackgroundColor: backgroundColor, - onTap: () => onLongPress?.call(context), - ), - ), - if (hovered) - Positioned( - top: -2, - right: -2, - child: Material( - color: backgroundColor, - borderRadius: BorderRadius.circular(16), - child: const Icon( - Icons.arrow_drop_down_circle_outlined, - size: 18, + if (listTileHovered) + Positioned( + top: -2, + right: -2, + child: Material( + color: backgroundColor, + borderRadius: BorderRadius.circular(16), + child: const Icon( + Icons.arrow_drop_down_circle_outlined, + size: 18, + ), ), ), - ), - ], + ], + ), ), ), ), - ), - title: Row( - children: [ - Expanded( - child: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - softWrap: false, - style: unread || room.hasNewMessages - ? const TextStyle(fontWeight: FontWeight.bold) - : null, - ), - ), - if (isMuted) - const Padding( - padding: EdgeInsets.only(left: 4.0), - child: Icon( - Icons.notifications_off_outlined, - size: 16, - ), - ), - if (room.isFavourite || room.membership == Membership.invite) - Padding( - padding: EdgeInsets.only( - right: hasNotifications ? 4.0 : 0.0, - ), - child: Icon( - Icons.push_pin, - size: 16, - color: theme.colorScheme.primary, - ), - ), - if (!room.isSpace && - lastEvent != null && - room.membership != Membership.invite) - Padding( - padding: const EdgeInsets.only(left: 4.0), + title: Row( + children: [ + Expanded( child: Text( - lastEvent.originServerTs.localizedTimeShort(context), - style: TextStyle( - fontSize: 13, - color: unread - ? theme.colorScheme.secondary - : theme.textTheme.bodyMedium!.color, + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + softWrap: false, + style: unread || room.hasNewMessages + ? const TextStyle(fontWeight: FontWeight.bold) + : null, + ), + ), + if (isMuted) + const Padding( + padding: EdgeInsets.only(left: 4.0), + child: Icon( + Icons.notifications_off_outlined, + size: 16, ), ), - ), - if (room.isSpace) - const Icon( - Icons.arrow_circle_right_outlined, - size: 18, - ), - ], - ), - subtitle: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (typingText.isEmpty && - ownMessage && - room.lastEvent!.status.isSending) ...[ - const SizedBox( - width: 16, - height: 16, - child: CircularProgressIndicator.adaptive(strokeWidth: 2), - ), - const SizedBox(width: 4), + if (room.isFavourite || room.membership == Membership.invite) + Padding( + padding: EdgeInsets.only( + right: hasNotifications ? 4.0 : 0.0, + ), + child: Icon( + Icons.push_pin, + size: 16, + color: theme.colorScheme.primary, + ), + ), + if (!room.isSpace && + lastEvent != null && + room.membership != Membership.invite) + Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Text( + lastEvent.originServerTs.localizedTimeShort(context), + style: TextStyle( + fontSize: 13, + color: unread + ? theme.colorScheme.secondary + : theme.textTheme.bodyMedium!.color, + ), + ), + ), + if (room.isSpace) + const Icon( + Icons.arrow_circle_right_outlined, + size: 18, + ), ], - AnimatedContainer( - width: typingText.isEmpty ? 0 : 18, - clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration(), - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - padding: const EdgeInsets.only(right: 4), - child: Icon( - Icons.edit_outlined, - color: theme.colorScheme.secondary, - size: 14, + ), + subtitle: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (typingText.isEmpty && + ownMessage && + room.lastEvent!.status.isSending) ...[ + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ), + const SizedBox(width: 4), + ], + AnimatedContainer( + width: typingText.isEmpty ? 0 : 18, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + padding: const EdgeInsets.only(right: 4), + child: Icon( + Icons.edit_outlined, + color: theme.colorScheme.secondary, + size: 14, + ), ), - ), - Expanded( - child: room.isSpace && room.membership == Membership.join - ? Text( - L10n.of(context)!.countChatsAndCountParticipants( - room.spaceChildren.length.toString(), - (room.summary.mJoinedMemberCount ?? 1).toString(), - ), - ) - : typingText.isNotEmpty - ? Text( - typingText, - style: TextStyle( - color: theme.colorScheme.primary, - ), - maxLines: 1, - softWrap: false, - ) - : FutureBuilder( - key: ValueKey( - '${lastEvent?.eventId}_${lastEvent?.type}', - ), - future: needLastEventSender - ? lastEvent.calcLocalizedBody( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: (!isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId), - ) - : null, - initialData: lastEvent?.calcLocalizedBodyFallback( - MatrixLocals(L10n.of(context)!), - hideReply: true, - hideEdit: true, - plaintextBody: true, - removeMarkdown: true, - withSenderNamePrefix: (!isDirectChat || - directChatMatrixId != - room.lastEvent?.senderId), - ), - builder: (context, snapshot) => Text( - room.membership == Membership.invite - ? isDirectChat - ? L10n.of(context)!.invitePrivateChat - : L10n.of(context)!.inviteGroupChat - : snapshot.data ?? - L10n.of(context)!.emptyChat, - softWrap: false, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontWeight: unread || room.hasNewMessages - ? FontWeight.bold - : null, - color: theme.colorScheme.onSurfaceVariant, - decoration: room.lastEvent?.redacted == true - ? TextDecoration.lineThrough - : null, - ), - ), - ), - ), - const SizedBox(width: 8), - AnimatedContainer( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - padding: const EdgeInsets.symmetric(horizontal: 7), - height: unreadBubbleSize, - width: !hasNotifications && !unread && !room.hasNewMessages - ? 0 - : (unreadBubbleSize - 9) * - room.notificationCount.toString().length + - 9, - decoration: BoxDecoration( - color: room.highlightCount > 0 || - room.membership == Membership.invite - ? Colors.red - : hasNotifications || room.markedUnread - ? theme.colorScheme.primary - : theme.colorScheme.primaryContainer, - borderRadius: BorderRadius.circular(AppConfig.borderRadius), - ), - child: Center( - child: hasNotifications + Expanded( + child: room.isSpace && room.membership == Membership.join ? Text( - room.notificationCount.toString(), - style: TextStyle( - color: room.highlightCount > 0 - ? Colors.white - : hasNotifications - ? theme.colorScheme.onPrimary - : theme.colorScheme.onPrimaryContainer, - fontSize: 13, + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length.toString(), + (room.summary.mJoinedMemberCount ?? 1).toString(), ), ) - : const SizedBox.shrink(), + : typingText.isNotEmpty + ? Text( + typingText, + style: TextStyle( + color: theme.colorScheme.primary, + ), + maxLines: 1, + softWrap: false, + ) + : FutureBuilder( + key: ValueKey( + '${lastEvent?.eventId}_${lastEvent?.type}', + ), + future: needLastEventSender + ? lastEvent.calcLocalizedBody( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ) + : null, + initialData: + lastEvent?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: (!isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId), + ), + builder: (context, snapshot) => Text( + room.membership == Membership.invite + ? isDirectChat + ? L10n.of(context)!.invitePrivateChat + : L10n.of(context)!.inviteGroupChat + : snapshot.data ?? + L10n.of(context)!.emptyChat, + softWrap: false, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: unread || room.hasNewMessages + ? FontWeight.bold + : null, + color: theme.colorScheme.onSurfaceVariant, + decoration: room.lastEvent?.redacted == true + ? TextDecoration.lineThrough + : null, + ), + ), + ), ), - ), - ], + const SizedBox(width: 8), + AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + padding: const EdgeInsets.symmetric(horizontal: 7), + height: unreadBubbleSize, + width: !hasNotifications && !unread && !room.hasNewMessages + ? 0 + : (unreadBubbleSize - 9) * + room.notificationCount.toString().length + + 9, + decoration: BoxDecoration( + color: room.highlightCount > 0 || + room.membership == Membership.invite + ? Colors.red + : hasNotifications || room.markedUnread + ? theme.colorScheme.primary + : theme.colorScheme.primaryContainer, + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + ), + child: Center( + child: hasNotifications + ? Text( + room.notificationCount.toString(), + style: TextStyle( + color: room.highlightCount > 0 + ? Colors.white + : hasNotifications + ? theme.colorScheme.onPrimary + : theme.colorScheme.onPrimaryContainer, + fontSize: 13, + ), + ) + : const SizedBox.shrink(), + ), + ), + ], + ), + onTap: onTap, + trailing: onForget == null + ? null + : IconButton( + icon: const Icon(Icons.delete_outlined), + onPressed: onForget, + ), ), - onTap: onTap, - trailing: onForget == null - ? null - : IconButton( - icon: const Icon(Icons.delete_outlined), - onPressed: onForget, - ), ), ), ), From 282188f574e419fe6837a3fa6d96999b76534522 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 15 Jul 2024 16:57:56 +0200 Subject: [PATCH 015/106] chore: Follow up listtilehovered --- lib/pages/chat_list/chat_list_item.dart | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 8036aee62..a146a076f 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -170,10 +170,13 @@ class ChatListItem extends StatelessWidget { onTap: () => onLongPress?.call(context), ), ), - if (listTileHovered) - Positioned( - top: -2, - right: -2, + Positioned( + top: -2, + right: -2, + child: AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: listTileHovered ? 1.1 : 1.0, child: Material( color: backgroundColor, borderRadius: BorderRadius.circular(16), @@ -183,6 +186,7 @@ class ChatListItem extends StatelessWidget { ), ), ), + ), ], ), ), From b05eb891a66816fb71277b94304d594389997a2d Mon Sep 17 00:00:00 2001 From: krille-chan Date: Mon, 15 Jul 2024 21:14:49 +0200 Subject: [PATCH 016/106] chore: Bring back navrail --- lib/config/routes.dart | 5 + lib/pages/chat/chat_view.dart | 15 ++- lib/pages/chat_list/chat_list.dart | 8 +- lib/pages/chat_list/chat_list_body.dart | 3 +- lib/pages/chat_list/chat_list_item.dart | 6 +- lib/pages/chat_list/chat_list_view.dart | 134 +++++++++++++++++---- lib/pages/chat_list/nav_rail_item.dart | 95 +++++++++++++++ lib/pages/chat_list/navi_rail_item.dart | 134 +++++++++++---------- lib/widgets/layouts/two_column_layout.dart | 4 +- lib/widgets/unread_rooms_badge.dart | 61 ++++------ linux/my_application.cc | 2 +- 11 files changed, 332 insertions(+), 135 deletions(-) create mode 100644 lib/pages/chat_list/nav_rail_item.dart diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 4aaf63a0b..d11cd56db 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -92,8 +92,12 @@ abstract class AppRoutes { FluffyThemes.isColumnMode(context) && state.fullPath?.startsWith('/rooms/settings') == false ? TwoColumnLayout( + displayNavigationRail: + state.path?.startsWith('/rooms/settings') != true, mainView: ChatList( activeChat: state.pathParameters['roomid'], + displayNavigationRail: + state.path?.startsWith('/rooms/settings') != true, ), sideView: child, ) @@ -171,6 +175,7 @@ abstract class AppRoutes { ? TwoColumnLayout( mainView: const Settings(), sideView: child, + displayNavigationRail: false, ) : child, ), diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 9974a9e70..80a84fa41 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -182,10 +182,17 @@ class ChatView extends StatelessWidget { tooltip: L10n.of(context)!.close, color: Theme.of(context).colorScheme.primary, ) - : UnreadRoomsBadge( - filter: (r) => r.id != controller.roomId, - badgePosition: BadgePosition.topEnd(end: 8, top: 4), - child: const Center(child: BackButton()), + : StreamBuilder( + stream: Matrix.of(context) + .client + .onSync + .stream + .where((syncUpdate) => syncUpdate.hasRoomUpdate), + builder: (context, _) => UnreadRoomsBadge( + filter: (r) => r.id != controller.roomId, + badgePosition: BadgePosition.topEnd(end: 8, top: 4), + child: const Center(child: BackButton()), + ), ), titleSpacing: 0, title: ChatAppBarTitle(controller), diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 8ee1870b5..d4f6067ed 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -73,10 +73,12 @@ extension LocalizedActiveFilter on ActiveFilter { class ChatList extends StatefulWidget { static BuildContext? contextForVoip; final String? activeChat; + final bool displayNavigationRail; const ChatList({ super.key, required this.activeChat, + this.displayNavigationRail = false, }); @override @@ -667,7 +669,11 @@ class ChatListController extends State child: Row( mainAxisSize: MainAxisSize.min, children: [ - const Icon(Icons.navigate_next_outlined), + Avatar( + mxContent: space.avatar, + size: Avatar.defaultSize / 2, + name: space.getLocalizedDisplayname(), + ), const SizedBox(width: 12), Expanded( child: Text( diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 4b17ad6b5..e596440b3 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -168,7 +168,8 @@ class ChatListViewBody extends StatelessWidget { ActiveFilter.allChats, ActiveFilter.unread, ActiveFilter.groups, - if (spaceDelegateCandidates.isNotEmpty) + if (spaceDelegateCandidates.isNotEmpty && + !controller.widget.displayNavigationRail) ActiveFilter.spaces, ] .map( diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index a146a076f..f704c41bf 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -171,12 +171,12 @@ class ChatListItem extends StatelessWidget { ), ), Positioned( - top: -2, - right: -2, + top: 0, + right: 0, child: AnimatedScale( duration: FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, - scale: listTileHovered ? 1.1 : 1.0, + scale: listTileHovered ? 1.0 : 0.0, child: Material( color: backgroundColor, borderRadius: BorderRadius.circular(16), diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 93fa8575b..5bb6687a0 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -5,7 +5,12 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:keyboard_shortcuts/keyboard_shortcuts.dart'; +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/pages/chat_list/navi_rail_item.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/avatar.dart'; import '../../widgets/matrix.dart'; import 'chat_list_body.dart'; @@ -35,32 +40,113 @@ class ChatListView extends StatelessWidget { return; } }, - child: GestureDetector( - onTap: FocusManager.instance.primaryFocus?.unfocus, - excludeFromSemantics: true, - behavior: HitTestBehavior.translucent, - child: Scaffold( - body: ChatListViewBody(controller), - floatingActionButton: KeyBoardShortcuts( - keysToPress: { - LogicalKeyboardKey.controlLeft, - LogicalKeyboardKey.keyN, - }, - onKeysPressed: () => context.go('/rooms/newprivatechat'), - helpLabel: L10n.of(context)!.newChat, - child: - selectMode == SelectMode.normal && !controller.isSearchMode - ? FloatingActionButton.extended( - onPressed: controller.addChatAction, - icon: const Icon(Icons.add_outlined), - label: Text( - L10n.of(context)!.chat, - overflow: TextOverflow.fade, + child: Row( + children: [ + if (FluffyThemes.isColumnMode(context) && + controller.widget.displayNavigationRail) ...[ + Builder( + builder: (context) { + final allSpaces = Matrix.of(context) + .client + .rooms + .where((room) => room.isSpace); + final rootSpaces = allSpaces + .where( + (space) => !allSpaces.any( + (parentSpace) => parentSpace.spaceChildren + .any((child) => child.roomId == space.id), + ), + ) + .toList(); + + return SizedBox( + width: FluffyThemes.navRailWidth, + child: ListView.builder( + scrollDirection: Axis.vertical, + itemCount: rootSpaces.length + 2, + itemBuilder: (context, i) { + if (i == 0) { + return NaviRailItem( + isSelected: controller.activeSpaceId == null, + onTap: controller.clearActiveSpace, + icon: const Icon(Icons.forum_outlined), + selectedIcon: const Icon(Icons.forum), + toolTip: L10n.of(context)!.chats, + unreadBadgeFilter: (room) => true, + ); + } + i--; + if (i == rootSpaces.length) { + return NaviRailItem( + isSelected: false, + onTap: () => context.go('/rooms/newspace'), + icon: const Icon(Icons.add), + toolTip: L10n.of(context)!.createNewSpace, + ); + } + final space = rootSpaces[i]; + final displayname = + rootSpaces[i].getLocalizedDisplayname( + MatrixLocals(L10n.of(context)!), + ); + final spaceChildrenIds = + space.spaceChildren.map((c) => c.roomId).toSet(); + return NaviRailItem( + toolTip: displayname, + isSelected: controller.activeSpaceId == space.id, + onTap: () => + controller.setActiveSpace(rootSpaces[i].id), + unreadBadgeFilter: (room) => + spaceChildrenIds.contains(room.id), + icon: Avatar( + mxContent: rootSpaces[i].avatar, + name: displayname, + size: 32, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), ), - ) - : const SizedBox.shrink(), + ); + }, + ), + ); + }, + ), + Container( + color: Theme.of(context).dividerColor, + width: 1, + ), + ], + Expanded( + child: GestureDetector( + onTap: FocusManager.instance.primaryFocus?.unfocus, + excludeFromSemantics: true, + behavior: HitTestBehavior.translucent, + child: Scaffold( + body: ChatListViewBody(controller), + floatingActionButton: KeyBoardShortcuts( + keysToPress: { + LogicalKeyboardKey.controlLeft, + LogicalKeyboardKey.keyN, + }, + onKeysPressed: () => context.go('/rooms/newprivatechat'), + helpLabel: L10n.of(context)!.newChat, + child: selectMode == SelectMode.normal && + !controller.isSearchMode + ? FloatingActionButton.extended( + onPressed: controller.addChatAction, + icon: const Icon(Icons.add_outlined), + label: Text( + L10n.of(context)!.chat, + overflow: TextOverflow.fade, + ), + ) + : const SizedBox.shrink(), + ), + ), + ), ), - ), + ], ), ); }, diff --git a/lib/pages/chat_list/nav_rail_item.dart b/lib/pages/chat_list/nav_rail_item.dart new file mode 100644 index 000000000..d09659f88 --- /dev/null +++ b/lib/pages/chat_list/nav_rail_item.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import '../../config/themes.dart'; + +class NaviRailItem extends StatefulWidget { + final String toolTip; + final bool isSelected; + final void Function() onTap; + final Widget icon; + final Widget? selectedIcon; + + const NaviRailItem({ + required this.toolTip, + required this.isSelected, + required this.onTap, + required this.icon, + this.selectedIcon, + super.key, + }); + + @override + State createState() => _NaviRailItemState(); +} + +class _NaviRailItemState extends State { + bool _hovered = false; + + void _onHover(bool hover) { + if (hover == _hovered) return; + setState(() { + _hovered = hover; + }); + } + + @override + Widget build(BuildContext context) { + final borderRadius = BorderRadius.circular(AppConfig.borderRadius); + return SizedBox( + height: 64, + width: 64, + child: Stack( + children: [ + Positioned( + top: 16, + bottom: 16, + left: 0, + child: AnimatedContainer( + width: widget.isSelected ? 4 : 0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primary, + borderRadius: const BorderRadius.only( + topRight: Radius.circular(90), + bottomRight: Radius.circular(90), + ), + ), + ), + ), + Center( + child: AnimatedScale( + scale: _hovered ? 1.2 : 1.0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: Material( + borderRadius: borderRadius, + color: widget.isSelected + ? Theme.of(context).colorScheme.primaryContainer + : Theme.of(context).colorScheme.surface, + child: Tooltip( + message: widget.toolTip, + child: InkWell( + borderRadius: borderRadius, + onTap: widget.onTap, + onHover: _onHover, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 8.0, + ), + child: widget.isSelected + ? widget.selectedIcon ?? widget.icon + : widget.icon, + ), + ), + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/chat_list/navi_rail_item.dart b/lib/pages/chat_list/navi_rail_item.dart index d09659f88..66ad7c041 100644 --- a/lib/pages/chat_list/navi_rail_item.dart +++ b/lib/pages/chat_list/navi_rail_item.dart @@ -1,14 +1,20 @@ import 'package:flutter/material.dart'; +import 'package:badges/badges.dart'; +import 'package:matrix/matrix.dart'; + import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/widgets/hover_builder.dart'; +import 'package:fluffychat/widgets/unread_rooms_badge.dart'; import '../../config/themes.dart'; -class NaviRailItem extends StatefulWidget { +class NaviRailItem extends StatelessWidget { final String toolTip; final bool isSelected; final void Function() onTap; final Widget icon; final Widget? selectedIcon; + final bool Function(Room)? unreadBadgeFilter; const NaviRailItem({ required this.toolTip, @@ -16,80 +22,78 @@ class NaviRailItem extends StatefulWidget { required this.onTap, required this.icon, this.selectedIcon, + this.unreadBadgeFilter, super.key, }); - - @override - State createState() => _NaviRailItemState(); -} - -class _NaviRailItemState extends State { - bool _hovered = false; - - void _onHover(bool hover) { - if (hover == _hovered) return; - setState(() { - _hovered = hover; - }); - } - @override Widget build(BuildContext context) { final borderRadius = BorderRadius.circular(AppConfig.borderRadius); - return SizedBox( - height: 64, - width: 64, - child: Stack( - children: [ - Positioned( - top: 16, - bottom: 16, - left: 0, - child: AnimatedContainer( - width: widget.isSelected ? 4 : 0, - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.primary, - borderRadius: const BorderRadius.only( - topRight: Radius.circular(90), - bottomRight: Radius.circular(90), - ), - ), - ), - ), - Center( - child: AnimatedScale( - scale: _hovered ? 1.2 : 1.0, - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - child: Material( - borderRadius: borderRadius, - color: widget.isSelected - ? Theme.of(context).colorScheme.primaryContainer - : Theme.of(context).colorScheme.surface, - child: Tooltip( - message: widget.toolTip, - child: InkWell( - borderRadius: borderRadius, - onTap: widget.onTap, - onHover: _onHover, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0, - vertical: 8.0, - ), - child: widget.isSelected - ? widget.selectedIcon ?? widget.icon - : widget.icon, + final icon = isSelected ? selectedIcon ?? this.icon : this.icon; + final unreadBadgeFilter = this.unreadBadgeFilter; + return HoverBuilder( + builder: (context, hovered) { + return SizedBox( + height: 64, + width: 64, + child: Stack( + children: [ + Positioned( + top: 16, + bottom: 16, + left: 0, + child: AnimatedContainer( + width: isSelected ? 4 : 0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primary, + borderRadius: const BorderRadius.only( + topRight: Radius.circular(90), + bottomRight: Radius.circular(90), ), ), ), ), - ), + Center( + child: AnimatedScale( + scale: hovered ? 1.2 : 1.0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: Material( + borderRadius: borderRadius, + color: isSelected + ? Theme.of(context).colorScheme.primaryContainer + : Theme.of(context).colorScheme.surface, + child: Tooltip( + message: toolTip, + child: InkWell( + borderRadius: borderRadius, + onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 8.0, + ), + child: unreadBadgeFilter == null + ? icon + : UnreadRoomsBadge( + filter: unreadBadgeFilter, + badgePosition: BadgePosition.topEnd( + top: -12, + end: -8, + ), + child: icon, + ), + ), + ), + ), + ), + ), + ), + ], ), - ], - ), + ); + }, ); } } diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index c270f120a..a6f4c8bdf 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -3,11 +3,13 @@ import 'package:flutter/material.dart'; class TwoColumnLayout extends StatelessWidget { final Widget mainView; final Widget sideView; + final bool displayNavigationRail; const TwoColumnLayout({ super.key, required this.mainView, required this.sideView, + required this.displayNavigationRail, }); @override Widget build(BuildContext context) { @@ -18,7 +20,7 @@ class TwoColumnLayout extends StatelessWidget { Container( clipBehavior: Clip.antiAlias, decoration: const BoxDecoration(), - width: 384.0, + width: 360.0 + (displayNavigationRail ? 64 : 0), child: mainView, ), Container( diff --git a/lib/widgets/unread_rooms_badge.dart b/lib/widgets/unread_rooms_badge.dart index 006691769..5270c0db3 100644 --- a/lib/widgets/unread_rooms_badge.dart +++ b/lib/widgets/unread_rooms_badge.dart @@ -19,41 +19,32 @@ class UnreadRoomsBadge extends StatelessWidget { @override Widget build(BuildContext context) { - return StreamBuilder( - stream: Matrix.of(context) - .client - .onSync - .stream - .where((syncUpdate) => syncUpdate.hasRoomUpdate), - builder: (context, _) { - final unreadCount = Matrix.of(context) - .client - .rooms - .where(filter) - .where((r) => (r.isUnread || r.membership == Membership.invite)) - .length; - return b.Badge( - badgeStyle: b.BadgeStyle( - badgeColor: Theme.of(context).colorScheme.primary, - elevation: 4, - borderSide: BorderSide( - color: Theme.of(context).colorScheme.surface, - width: 2, - ), - ), - badgeContent: Text( - unreadCount.toString(), - style: TextStyle( - color: Theme.of(context).colorScheme.onPrimary, - fontSize: 12, - ), - ), - showBadge: unreadCount != 0, - badgeAnimation: const b.BadgeAnimation.scale(), - position: badgePosition ?? b.BadgePosition.bottomEnd(), - child: child, - ); - }, + final unreadCount = Matrix.of(context) + .client + .rooms + .where(filter) + .where((r) => (r.isUnread || r.membership == Membership.invite)) + .length; + return b.Badge( + badgeStyle: b.BadgeStyle( + badgeColor: Theme.of(context).colorScheme.primary, + elevation: 4, + borderSide: BorderSide( + color: Theme.of(context).colorScheme.surface, + width: 2, + ), + ), + badgeContent: Text( + unreadCount.toString(), + style: TextStyle( + color: Theme.of(context).colorScheme.onPrimary, + fontSize: 12, + ), + ), + showBadge: unreadCount != 0, + badgeAnimation: const b.BadgeAnimation.scale(), + position: badgePosition ?? b.BadgePosition.bottomEnd(), + child: child, ); } } diff --git a/linux/my_application.cc b/linux/my_application.cc index 0abe77c60..c185bcd78 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -60,7 +60,7 @@ static void my_application_activate(GApplication* application) { gtk_window_set_title(window, "FluffyChat"); } - gtk_window_set_default_size(window, 800, 600); + gtk_window_set_default_size(window, 864, 680); gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); From 467d103c2f540ece1ed13c7d912cd5e73a9ac490 Mon Sep 17 00:00:00 2001 From: Krille Date: Tue, 16 Jul 2024 07:31:43 +0200 Subject: [PATCH 017/106] chore: Follow up chat context menu --- lib/pages/chat_list/chat_list.dart | 90 +++++++++++++++++------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index d4f6067ed..50237a569 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -620,6 +620,10 @@ class ChatListController extends State BuildContext posContext, [ Room? space, ]) async { + if (room.membership == Membership.invite) { + return onChatTap(room); + } + final overlay = Overlay.of(posContext).context.findRenderObject() as RenderBox; @@ -644,7 +648,7 @@ class ChatListController extends State position: position, items: [ PopupMenuItem( - enabled: false, + value: ChatContextAction.open, child: Row( mainAxisSize: MainAxisSize.min, children: [ @@ -754,46 +758,51 @@ class ChatListController extends State if (action == null) return; if (!mounted) return; - if (action == ChatContextAction.goToSpace) { - setActiveSpace(space!.id); - return; - } - - if (action == ChatContextAction.leave) { - final confirmed = await showOkCancelAlertDialog( - useRootNavigator: false, - context: context, - title: L10n.of(context)!.areYouSure, - okLabel: L10n.of(context)!.leave, - cancelLabel: L10n.of(context)!.no, - message: L10n.of(context)!.archiveRoomDescription, - isDestructiveAction: true, - ); - if (confirmed == OkCancelResult.cancel) return; - } - if (!mounted) return; - - await showFutureLoadingDialog( - context: context, - future: () async { - switch (action) { - case ChatContextAction.goToSpace: - return; - case ChatContextAction.favorite: - return room.setFavourite(!room.isFavourite); - case ChatContextAction.markUnread: - return room.markUnread(!room.markedUnread); - case ChatContextAction.mute: - return room.setPushRuleState( - room.pushRuleState == PushRuleState.notify - ? PushRuleState.mentionsOnly - : PushRuleState.notify, - ); - case ChatContextAction.leave: - return room.leave(); + switch (action) { + case ChatContextAction.open: + onChatTap(room); + return; + case ChatContextAction.goToSpace: + setActiveSpace(space!.id); + return; + case ChatContextAction.favorite: + await showFutureLoadingDialog( + context: context, + future: () => room.setFavourite(!room.isFavourite), + ); + return; + case ChatContextAction.markUnread: + await showFutureLoadingDialog( + context: context, + future: () => room.markUnread(!room.markedUnread), + ); + return; + case ChatContextAction.mute: + await showFutureLoadingDialog( + context: context, + future: () => room.setPushRuleState( + room.pushRuleState == PushRuleState.notify + ? PushRuleState.mentionsOnly + : PushRuleState.notify, + ), + ); + return; + case ChatContextAction.leave: + final confirmed = await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context)!.areYouSure, + okLabel: L10n.of(context)!.leave, + cancelLabel: L10n.of(context)!.no, + message: L10n.of(context)!.archiveRoomDescription, + isDestructiveAction: true, + ); + if (confirmed == OkCancelResult.cancel) return; + if (!mounted) { + await showFutureLoadingDialog(context: context, future: room.leave); } - }, - ); + return; + } } void dismissStatusList() async { @@ -993,6 +1002,7 @@ enum InviteActions { enum AddRoomType { chat, subspace } enum ChatContextAction { + open, goToSpace, favorite, markUnread, From 0bf387da14c562eae21b36897a53a300ea5b6717 Mon Sep 17 00:00:00 2001 From: Krille Date: Tue, 16 Jul 2024 08:48:45 +0200 Subject: [PATCH 018/106] build: Update android target sdk to 34 --- android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index aa8b76494..fba1b5189 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -45,7 +45,7 @@ android { defaultConfig { applicationId "chat.fluffy.fluffychat" minSdkVersion 21 - targetSdkVersion 33 + targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From 6ccebbcf121a39959b3b97640be87a6d67d39999 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Mon, 15 Jul 2024 21:08:30 +0000 Subject: [PATCH 019/106] Translated using Weblate (Arabic) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ar/ --- assets/l10n/intl_ar.arb | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_ar.arb b/assets/l10n/intl_ar.arb index eff3e2516..126dd8b5c 100644 --- a/assets/l10n/intl_ar.arb +++ b/assets/l10n/intl_ar.arb @@ -736,7 +736,7 @@ "type": "text", "placeholders": {} }, - "oopsSomethingWentWrong": "عذراً، هناك خطأ ما…", + "oopsSomethingWentWrong": "عفوًا، حدث خطأ ما…", "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} @@ -2260,7 +2260,7 @@ }, "jump": "قفز", "@jump": {}, - "report": "التقرير", + "report": "تقرير", "@report": {}, "noKeyForThisMessage": "يمكن أن يحدث هذا إذا تم إرسال الرسالة قبل تسجيل الدخول إلى حسابك على هذا الجهاز.\n\nمن الممكن أيضا أن يكون المرسل قد حظر جهازك أو حدث خطأ ما في الاتصال بالإنترنت.\n\nهل يمكنك قراءة الرسالة في جلسة أخرى؟ ثم يمكنك نقل الرسالة منه! انتقل إلى الإعدادات > الأجهزة وتأكد من أن أجهزتك قد تحققت من بعضها البعض. عندما تفتح الغرفة في المرة التالية وتكون كلتا الجلستين في المقدمة ، سيتم إرسال المفاتيح تلقائيا.\n\nألا تريد أن تفقد المفاتيح عند تسجيل الخروج أو تبديل الأجهزة؟ تأكد من تمكين النسخ الاحتياطي للدردشة في الإعدادات.", "@noKeyForThisMessage": {}, @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "خاطئ", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." + }, + "countChatsAndCountParticipants": "{chats} دردشات و {participants} مشاركين", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "noMoreChatsFound": "لم يتم العثور على دردشات...", + "@noMoreChatsFound": {}, + "joinedChats": "انضم إلى الدردشة", + "@joinedChats": {}, + "unread": "غير المقروءة", + "@unread": {}, + "space": "المساحة", + "@space": {}, + "spaces": "المساحات", + "@spaces": {}, + "markAsUnread": "تحديد كغير مقروء", + "@markAsUnread": {}, + "goToSpace": "انتقل إلى المساحة: {space}", + "@goToSpace": { + "type": "text", + "space": {} } } From 146be1bcdcef6ac9e1ae3b66fb7d2ebc187bc9ca Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 15 Jul 2024 13:39:33 +0000 Subject: [PATCH 020/106] Translated using Weblate (German) Currently translated at 99.6% (640 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/ --- assets/l10n/intl_de.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_de.arb b/assets/l10n/intl_de.arb index cb0c713d9..9e8d2fc67 100644 --- a/assets/l10n/intl_de.arb +++ b/assets/l10n/intl_de.arb @@ -1712,7 +1712,7 @@ "type": "text", "placeholders": {} }, - "unpin": "Abpinnen", + "unpin": "Nicht mehr anpinnen", "@unpin": { "type": "text", "placeholders": {} From 92e740bdc502b264254844203c1816cec421252e Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Tue, 16 Jul 2024 06:16:30 +0000 Subject: [PATCH 021/106] Translated using Weblate (Basque) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eu/ --- assets/l10n/intl_eu.arb | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/assets/l10n/intl_eu.arb b/assets/l10n/intl_eu.arb index 12ad1c53d..cefc59b53 100644 --- a/assets/l10n/intl_eu.arb +++ b/assets/l10n/intl_eu.arb @@ -2547,7 +2547,7 @@ "sender": {} } }, - "sendReadReceiptsDescription": "Txateko beste kideek mezu bat irakurri duzula ikus dezakete.", + "sendReadReceiptsDescription": "Txateko beste partaideek mezu bat irakurri duzula ikus dezakete.", "@sendReadReceiptsDescription": {}, "forwardMessageTo": "Birbidali mezua {roomName}(e)ra?", "@forwardMessageTo": { @@ -2576,7 +2576,7 @@ "@verifyOtherUserDescription": {}, "formattedMessagesDescription": "Erakutsi mezu aberatsen edukia markdown erabiliz, testu lodia esaterako.", "@formattedMessagesDescription": {}, - "sendTypingNotificationsDescription": "Txateko beste kideek mezu berri bat idazten ari zarela ikus dezakete.", + "sendTypingNotificationsDescription": "Txateko beste partaideek mezu berri bat idazten ari zarela ikus dezakete.", "@sendTypingNotificationsDescription": {}, "verifyOtherUser": "🔐 Egiaztatu beste erabiltzaile bat", "@verifyOtherUser": {}, @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "ez", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." - } + }, + "noMoreChatsFound": "Ez da beste txatik aurkitu...", + "@noMoreChatsFound": {}, + "unread": "Irakurri gabe", + "@unread": {}, + "space": "Gunea", + "@space": {}, + "joinedChats": "Batu zaren txatak", + "@joinedChats": {}, + "goToSpace": "Joan {space} gunera", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "Markatu irakurri gabetzat", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} txat eta {participants} partaide", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "spaces": "Guneak", + "@spaces": {} } From b1cfa00d83c3cb927277fb171ac3d9598d9af4ad Mon Sep 17 00:00:00 2001 From: Sovkipyk Date: Mon, 15 Jul 2024 19:57:57 +0000 Subject: [PATCH 022/106] Translated using Weblate (French) Currently translated at 99.8% (641 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/fr/ --- assets/l10n/intl_fr.arb | 5118 +++++++++++++++++++++------------------ 1 file changed, 2740 insertions(+), 2378 deletions(-) diff --git a/assets/l10n/intl_fr.arb b/assets/l10n/intl_fr.arb index ba0a82634..7c8c317e2 100644 --- a/assets/l10n/intl_fr.arb +++ b/assets/l10n/intl_fr.arb @@ -1,2379 +1,2741 @@ { - "@@locale": "fr", - "@@last_modified": "2021-08-14 12:41:10.051787", - "about": "À propos", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Accepter", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "👍 {username} a accepté l'invitation", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Compte", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "🔐 {username} a activé le chiffrement de bout en bout", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Ajouter un courriel", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Ajouter à l'espace", - "@addToSpace": {}, - "admin": "Administrateur", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "adresse", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "Tout", - "@all": { - "type": "text", - "placeholders": {} - }, - "allChats": "Toutes les discussions", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} a répondu à l'appel", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Tout le monde peut rejoindre", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "appLock": "Verrouillage de l’application", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "archive": "Archiver", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Les invités peuvent-i·e·ls rejoindre", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Êtes-vous sûr·e ?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "Voulez-vous vraiment vous déconnecter ?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Pour pouvoir faire signer l'autre personne, veuillez entrer la phrase de passe de votre trousseau sécurisé ou votre clé de récupération.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Accepter cette demande de vérification de la part de {username} ?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "autoplayImages": "Lire automatiquement les autocollants et les émojis animés", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "badServerLoginTypesException": "Le serveur d'accueil prend en charge les types de connexion :\n{serverVersions}\nMais cette application ne prend en charge que :\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "Le serveur d'accueil prend en charge les versions des spécifications :\n{serverVersions}\nMais cette application ne prend en charge que {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "Bannir de la discussion", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Banni", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} a banni {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Bloquer l'appareil", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Bloqué", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Messages de bot", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "Annuler", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "Impossible d'ouvrir l'URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changeDeviceName": "Modifier le nom de l'appareil", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} a changé l'image de la discussion", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} a changé la description de la discussion en : '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} a renommé la discussion en : '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username} a changé les permissions de la discussion", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} a changé son nom en : '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} a changé les règles d'accès à la discussion pour les invités", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} a changé les règles d'accès à la discussion pour les invités en : {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "{username} a changé la visibilité de l'historique de la discussion", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} a changé la visibilité de l'historique de la discussion en : {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} a changé les règles d'accès à la discussion", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} a changé les règles d'accès à la discussion en : {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} a changé son avatar", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} a changé les adresses du salon", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} a changé le lien d'invitation", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Changer de mot de passe", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Changer le serveur d'accueil", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Changez votre style", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Changer le nom du groupe", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Changer votre avatar", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "Le chiffrement a été corrompu", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "Discussion", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Sauvegarde des discussions", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "Vos anciens messages sont sécurisés par une clé de récupération. Veillez à ne pas la perdre.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Détails de la discussion", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "La discussion a été ajoutée à cet espace", - "@chatHasBeenAddedToThisSpace": {}, - "chats": "Discussions", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Choisissez un mot de passe fort", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Effacer les archives", - "@clearArchive": {}, - "close": "Fermer", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Bannir l'utilisateur/trice donné(e) de ce salon", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_html": "Envoyer du texte au format HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Inviter l'utilisateur/trice donné(e) dans ce salon", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Rejoindre le salon donné", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Supprime l'utilisateur/trice donné(e) de ce salon", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Quitter ce salon", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_me": "Décrivez-vous", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_myroomavatar": "Définir votre image pour ce salon (par mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "Définir votre nom d'affichage pour ce salon", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Définir le niveau de puissance de l'utilisateur/trice donné(e) (par défaut : 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Envoyer du texte non formaté", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Envoyer une réponse en tant que réaction", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_send": "Envoyer du texte", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_unban": "Débannir l'utilisateur/trice donné(e) de ce salon", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandInvalid": "Commande invalide", - "@commandInvalid": { - "type": "text" - }, - "commandMissing": "{command} n'est pas une commande.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "compareEmojiMatch": "Veuillez comparer les émojis", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Veuillez comparer les chiffres", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Configurer la discussion", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "Confirmer", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "Se connecter", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Le contact a été invité au groupe", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Contient un nom d'affichage", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Contient un nom d'utilisateur·ice", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "Le contenu a été signalé aux administrateurs du serveur", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Copié dans le presse-papier", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Copier", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Copier dans le presse-papiers", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Impossible de déchiffrer le message : {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} participant(s)", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Créer", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "💬 {username} a créé la discussion", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "createNewSpace": "Nouvel espace", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Actif en ce moment", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Sombre", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{day}/{month}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{day}/{month}/{year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "Cette opération va désactiver votre compte. Une fois cette action effectuée, aucun retour en arrière n'est possible ! Êtes-vous sûr·e ?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Niveau d'autorisation par défaut", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "delete": "Supprimer", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Supprimer le compte", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Supprimer le message", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Appareil", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "Identifiant de l'appareil", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Appareils", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "Discussions directes", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Renommage effectué", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Télécharger le fichier", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "Modifier", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Modifier les serveurs bloqués", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Changer de nom d'affichage", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Modifier les adresses du salon", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Modifier l'avatar du salon", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Cette émoticône existe déjà !", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Raccourci d'émoticône invalide !", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Packs d'émoticônes pour le salon", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Paramètre des émoticônes", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Raccourci de l'émoticône", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Vous devez sélectionner un raccourci d'émoticône et une image !", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Discussion vide", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Activer globalement le pack d'émoticônes", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Activer le chiffrement", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Vous ne pourrez plus désactiver le chiffrement. Êtes-vous sûr(e) ?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Chiffré", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryption": "Chiffrement", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "Le chiffrement n'est pas activé", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} a mis fin à l'appel", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "Saisissez une adresse de courriel", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "Renseignez votre serveur d'accueil", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "Erreur lors de l'obtention de la localisation : {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "everythingReady": "Tout est prêt !", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Extrêmement offensant", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "fileName": "Nom du ficher", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Taille de la police", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "Transférer", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "À partir de l'entrée dans le salon", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "À partir de l'invitation", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Aller dans le nouveau salon", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Groupe", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "Le groupe est public", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "Groupes", - "@groups": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Groupe avec {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "Les invités ne peuvent pas rejoindre", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Les invités peuvent rejoindre", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} a annulé l'invitation de {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Aide", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Cacher les évènements supprimés", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Cacher les évènements inconnus", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "À quel point ce contenu est-il offensant ?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "Identifiant", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "Identité", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Ignorer", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Utilisateur·ices ignoré·es", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "J'ai cliqué sur le lien", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Non offensant", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Inviter un contact", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Inviter un contact dans {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "Invité·e", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "📩 {username} a invité {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "Uniquement les utilisateur·ices invité·es", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Inviter pour moi", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} vous a invité·e sur FluffyChat. \n1. Installez FluffyChat : https://fluffychat.im \n2. Inscrivez-vous ou connectez-vous \n3. Ouvrez le lien d'invitation : {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "est en train d'écrire…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "👋 {username} a rejoint la discussion", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "Rejoindre le salon", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "👞 {username} a expulsé {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "🙅 {username} a expulsé et banni {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "Expulser de la discussion", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Vu·e pour la dernière fois : {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Partir", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "A quitté la discussion", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Licence", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Clair", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Charger {count} participant·es de plus", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "Chargement… Veuillez patienter.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Charger plus…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "locationDisabledNotice": "Les services de localisation sont désactivés. Il est nécessaire de les activer avant de pouvoir partager votre localisation.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "L'application n'a pas la permission d'accéder à votre localisation. Merci de l'accorder afin de pouvoir partager votre localisation.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "login": "Se connecter", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Se connecter à {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "Se déconnecter", - "@logout": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Changements de membres", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "Mentionner", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "Messages", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "Modérateur·rice", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Mettre la discussion en sourdine", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Pour l'instant, vous avez besoin de Pantalaimon pour utiliser le chiffrement de bout en bout.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "Nouvelle discussion", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "💬 Nouveau message dans FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Nouvelle demande de vérification !", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Suivant", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "Non", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Aucune connexion au serveur", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Aucune émoticône trouvée. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Vous pouvez activer le chiffrement seulement quand le salon n'est plus accessible au public.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Il semble que vous n'ayez aucun service Google sur votre téléphone. C'est une bonne décision pour votre vie privée ! Pour recevoir des notifications dans FluffyChat, nous vous recommandons d'utiliser https://microg.org/ ou https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} n'est pas un serveur Matrix, souhaitez-vous utiliser {server2} à la place ?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "none": "Aucun", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Vous n'avez pas encore ajouté de moyen pour récupérer votre mot de passe.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Aucune permission", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Aucun salon trouvé…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "Notifications", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Notifications activées pour ce compte", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count} utilisateur·ices écrivent…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "obtainingLocation": "Obtention de la localisation…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "offensive": "Offensant", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "Hors ligne", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "Valider", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "En ligne", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Oups ! Une erreur s'est malheureusement produite lors du réglage des notifications.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Oups, un problème est survenu…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Ouvrez l'application pour lire le message", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Ouvrir l'appareil photo", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "openInMaps": "Ouvrir dans maps", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "or": "Ou", - "@or": { - "type": "text", - "placeholders": {} - }, - "participant": "Participant(e)", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "Phrase de passe ou clé de récupération", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Mot de passe", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Mot de passe oublié", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Le mot de passe a été modifié", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Récupération du mot de passe", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "Personnes", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Choisir une image", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Épingler", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "Lire {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChoose": "Veuillez choisir", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Veuillez choisir un code d’accès", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Veuillez cliquer sur le lien contenu dans le courriel puis continuez.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Veuillez saisir 4 chiffres ou laisser vide pour désactiver le verrouillage de l’application.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Renseignez votre mot de passe", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Veuillez saisir votre code PIN", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Renseignez votre nom d'utilisateur·ice", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Veuillez suivre les instructions sur le site et appuyer sur Suivant.", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Vie privée", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Salons publics", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Règles de notifications", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "reason": "Motif", - "@reason": { - "type": "text", - "placeholders": {} - }, - "recording": "Enregistrement", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} a supprimé un évènement", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactMessage": "Supprimer un message", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "register": "S'inscrire", - "@register": { - "type": "text", - "placeholders": {} - }, - "reject": "Refuser", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} a refusé l'invitation", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "Rejoindre de nouveau", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Supprimer", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Supprimer tous les autres appareils", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Supprimé par {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Supprimer l'appareil", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Débannissement de la discussion", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Supprimer votre avatar", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Afficher les contenus riches des messages", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Remplacer le salon par une nouvelle version", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "Répondre", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Signaler un message", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Demander la permission", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "Le salon a été mis à niveau", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Version du salon", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Enregistrer le fichier", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "search": "Rechercher", - "@search": { - "type": "text", - "placeholders": {} - }, - "security": "Sécurité", - "@security": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Vu par {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "send": "Envoyer", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Envoyer un message", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAsText": "Envoyer un texte", - "@sendAsText": { - "type": "text" - }, - "sendAudio": "Envoyer un fichier audio", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Envoyer un fichier", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Envoyer une image", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Envoyer des messages", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Envoyer le fichier original", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Envoyer un autocollant", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Envoyer une vidéo", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "📁 {username} a envoyé un fichier", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "🎤 {username} a envoyé un fichier audio", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "🖼️ {username} a envoyé une image", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "😊 {username} a envoyé un autocollant", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "🎥 {username} a envoyé une vidéo", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName} a envoyé des informations sur l'appel", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setAsCanonicalAlias": "Définir comme adresse principale", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "Définir des émoticônes personnalisées", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Créer un lien d'invitation", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Définir le niveau de permissions", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Définir le statut", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "Paramètres", - "@settings": { - "type": "text", - "placeholders": {} - }, - "share": "Partager", - "@share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} a partagé sa position", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "shareLocation": "Partager la localisation", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "showPassword": "Afficher le mot de passe", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Authentification unique", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "skip": "Ignorer", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Code source", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "L'espace est public", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Nom de l'espace", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName} a démarré un appel", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "status": "Statut", - "@status": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "Comment allez-vous aujourd'hui ?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "Soumettre", - "@submit": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "Synchronisation... Veuillez patienter.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "Système", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "Elles ne correspondent pas", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Elles correspondent", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Activer/désactiver en favori", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Activer/désactiver la sourdine", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Marquer comme lu / non lu", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Trop de requêtes. Veuillez réessayer plus tard !", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Transfert à partir d'un autre appareil", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Retenter l'envoi", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Indisponible", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} a annulé le bannissement de {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unblockDevice": "Retirer le blocage sur l'appareil", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Appareil inconnu", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Algorithme de chiffrement inconnu", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Événement de type inconnu : '{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "unmuteChat": "Retirer la sourdine de la discussion", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Désépingler", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{1 discussion non lue} other{{unreadCount} discussions non lues}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "userAndOthersAreTyping": "{username} et {count} autres sont en train d'écrire…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username} et {username2} sont en train d'écrire…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username} est en train d'écrire…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userLeftTheChat": "🚪 {username} a quitté la discussion", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "username": "Nom d'utilisateur·ice", - "@username": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "{username} a envoyé un évènement de type {type}", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "verified": "Vérifié", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verify": "Vérifier", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Commencer la vérification", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "La vérification a été effectuée avec succès !", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Vérification de l'autre compte", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Appel vidéo", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Visibilité de l'historique de la discussion", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Visible pour tous les participant·es", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Visible pour tout le monde", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Message vocal", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "En attente de l'acceptation de la demande par le partenaire…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Image de fond", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "Attention !", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Nous vous avons envoyé un courriel", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Qui peut faire quelle action", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Qui est autorisé·e à rejoindre ce groupe", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "Pourquoi voulez-vous le signaler ?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Effacer la sauvegarde de votre discussion pour créer une nouvelle clé de récupération ?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Grâce à ces adresses, vous pouvez récupérer votre mot de passe si vous en avez besoin.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Écrivez un message…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "Oui", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "Vous", - "@you": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Vous ne participez plus à cette discussion", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Vous avez été banni·e de cette discussion", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Votre clé publique", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "scanQrCode": "Scanner un code QR", - "@scanQrCode": {}, - "sendOnEnter": "Envoyer avec Entrée", - "@sendOnEnter": {}, - "homeserver": "Serveur d'accueil", - "@homeserver": {}, - "serverRequiresEmail": "Ce serveur doit valider votre adresse électronique pour l'inscription.", - "@serverRequiresEmail": {}, - "enableMultiAccounts": "(BETA) Activer les comptes multiples sur cet appareil", - "@enableMultiAccounts": {}, - "bundleName": "Nom du groupe", - "@bundleName": {}, - "removeFromBundle": "Retirer de ce groupe", - "@removeFromBundle": {}, - "addToBundle": "Ajouter au groupe", - "@addToBundle": {}, - "editBundlesForAccount": "Modifier les groupes pour ce compte", - "@editBundlesForAccount": {}, - "addAccount": "Ajouter un compte", - "@addAccount": {}, - "oneClientLoggedOut": "Un de vos clients a été déconnecté", - "@oneClientLoggedOut": {}, - "link": "Lien", - "@link": {}, - "yourChatBackupHasBeenSetUp": "Votre sauvegarde de la discussion a été mise en place.", - "@yourChatBackupHasBeenSetUp": {}, - "unverified": "Non vérifié", - "@unverified": {}, - "repeatPassword": "Répétez le mot de passe", - "@repeatPassword": {}, - "messageType": "Type de message", - "@messageType": {}, - "openGallery": "Ouvrir dans la Galerie", - "@openGallery": {}, - "time": "Heure", - "@time": {}, - "sender": "Expéditeur/trice", - "@sender": {}, - "messageInfo": "Informations sur le message", - "@messageInfo": {}, - "removeFromSpace": "Supprimer de l’espace", - "@removeFromSpace": {}, - "addToSpaceDescription": "Sélectionnez un espace pour y ajouter cette discussion.", - "@addToSpaceDescription": {}, - "start": "Commencer", - "@start": {}, - "commandHint_create": "Créer un groupe de discussion vide\nUtilisez --no-encryption pour désactiver le chiffrement", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_discardsession": "Abandonner la session", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "commandHint_clearcache": "Vider le cache", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandHint_dm": "Commencer une discussion directe\nUtilisez --no-encryption pour désactiver le chiffrement", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "openVideoCamera": "Ouvrir la caméra pour une vidéo", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "publish": "Publier", - "@publish": {}, - "videoWithSize": "Vidéo ({size})", - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "dismiss": "Rejeter", - "@dismiss": {}, - "markAsRead": "Marquer comme lu", - "@markAsRead": {}, - "reportUser": "Signaler l'utilisateur/trice", - "@reportUser": {}, - "openChat": "Ouvrir la discussion", - "@openChat": {}, - "reactedWith": "{sender} a réagi avec {reaction}", - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "emojis": "Émojis", - "@emojis": {}, - "placeCall": "Passer un appel", - "@placeCall": {}, - "voiceCall": "Appel vocal", - "@voiceCall": {}, - "unsupportedAndroidVersion": "Version d'Android non prise en charge", - "@unsupportedAndroidVersion": {}, - "unsupportedAndroidVersionLong": "Cette fonctionnalité nécessite une nouvelle version d'Android. Veuillez vérifier les mises à jour ou la prise en charge de Lineage OS.", - "@unsupportedAndroidVersionLong": {}, - "pinMessage": "Épingler au salon", - "@pinMessage": {}, - "confirmEventUnpin": "Voulez-vous vraiment désépingler définitivement l'événement ?", - "@confirmEventUnpin": {}, - "videoCallsBetaWarning": "Veuillez noter que les appels vidéo sont actuellement en version bêta. Ils peuvent ne pas fonctionner comme prévu ou ne oas fonctionner du tout sur toutes les plateformes.", - "@videoCallsBetaWarning": {}, - "experimentalVideoCalls": "Appels vidéo expérimentaux", - "@experimentalVideoCalls": {}, - "emailOrUsername": "Courriel ou identifiant", - "@emailOrUsername": {}, - "switchToAccount": "Passer au compte {number}", - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "nextAccount": "Compte suivant", - "@nextAccount": {}, - "previousAccount": "Compte précédent", - "@previousAccount": {}, - "widgetJitsi": "Jitsi Meet", - "@widgetJitsi": {}, - "widgetCustom": "Personnalisé", - "@widgetCustom": {}, - "widgetUrlError": "Ceci n'est pas un lien valide.", - "@widgetUrlError": {}, - "widgetNameError": "Veuillez fournir un nom d'affichage.", - "@widgetNameError": {}, - "errorAddingWidget": "Erreur lors de l'ajout du widget.", - "@errorAddingWidget": {}, - "widgetEtherpad": "Note textuelle", - "@widgetEtherpad": {}, - "addWidget": "Ajouter un widget", - "@addWidget": {}, - "widgetName": "Nom", - "@widgetName": {}, - "widgetVideo": "Vidéo", - "@widgetVideo": {}, - "youRejectedTheInvitation": "Vous avez rejeté l'invitation", - "@youRejectedTheInvitation": {}, - "youJoinedTheChat": "Vous avez rejoint la discussion", - "@youJoinedTheChat": {}, - "youHaveWithdrawnTheInvitationFor": "Vous avez retiré l'invitation pour {user}", - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "youAcceptedTheInvitation": "👍 Vous avez accepté l'invitation", - "@youAcceptedTheInvitation": {}, - "youBannedUser": "Vous avez banni {user}", - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "youInvitedBy": "📩 Vous avez été invité par {user}", - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "youInvitedUser": "📩 Vous avez invité {user}", - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "youKicked": "👞 Vous avez dégagé {user}", - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "youKickedAndBanned": "🙅 Vous avez dégagé et banni {user}", - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "youUnbannedUser": "Vous avez débanni {user}", - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "separateChatTypes": "Séparer les discussions directes et les groupes", - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "users": "Utilisateurs/trices", - "@users": {}, - "storeInAndroidKeystore": "Stocker dans Android KeyStore", - "@storeInAndroidKeystore": {}, - "storeInAppleKeyChain": "Stocker dans Apple KeyChain", - "@storeInAppleKeyChain": {}, - "user": "Utilisateur/trice", - "@user": {}, - "custom": "Personnalisé", - "@custom": {}, - "hydrate": "Restaurer à partir du fichier de sauvegarde", - "@hydrate": {}, - "dehydrateWarning": "Cette action ne peut pas être annulée. Assurez-vous d'enregistrer convenablement le fichier de sauvegarde.", - "@dehydrateWarning": {}, - "dehydrateTorLong": "Pour les utilisateurs/trices de TOR, il est recommandé d'exporter la session avant de fermer la fenêtre.", - "@dehydrateTorLong": {}, - "recoveryKey": "Clé de récupération", - "@recoveryKey": {}, - "recoveryKeyLost": "Clé de récupération perdue ?", - "@recoveryKeyLost": {}, - "indexedDbErrorLong": "Le stockage des messages n'est malheureusement pas activé par défaut en mode privé.\nVeuillez consulter :\n - about:config\n - Définir dom.indexedDB.privateBrowsing.enabled à « vrai ».\nSinon, il n'est pas possible d'exécuter FluffyChat.", - "@indexedDbErrorLong": {}, - "saveKeyManuallyDescription": "Enregistrer cette clé manuellement en déclenchant la boîte de dialogue de partage du système ou le presse-papiers.", - "@saveKeyManuallyDescription": {}, - "storeInSecureStorageDescription": "Stocker la clé de récupération dans un espace sécurisé de cet appareil.", - "@storeInSecureStorageDescription": {}, - "indexedDbErrorTitle": "Problèmes relatifs au mode privé", - "@indexedDbErrorTitle": {}, - "dehydrate": "Exporter la session et effacer l'appareil", - "@dehydrate": {}, - "dehydrateTor": "Utilisateurs/trices de TOR : Exporter la session", - "@dehydrateTor": {}, - "hydrateTor": "Utilisateurs/trices de TOR : Importer une session exportée", - "@hydrateTor": {}, - "hydrateTorLong": "Vous avez exporté votre session la dernière fois sur TOR ? Importez-la rapidement et continuez à discuter.", - "@hydrateTorLong": {}, - "pleaseEnterRecoveryKey": "Veuillez saisir votre clé de récupération :", - "@pleaseEnterRecoveryKey": {}, - "pleaseEnterRecoveryKeyDescription": "Pour déverrouiller vos anciens messages, veuillez entrer votre clé de récupération qui a été générée lors d'une session précédente. Votre clé de récupération n'est PAS votre mot de passe.", - "@pleaseEnterRecoveryKeyDescription": {}, - "unlockOldMessages": "Déverrouiller les anciens messages", - "@unlockOldMessages": {}, - "storeSecurlyOnThisDevice": "Stocker de manière sécurisé sur cet appareil", - "@storeSecurlyOnThisDevice": {}, - "countFiles": "{count} fichiers", - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "noKeyForThisMessage": "Cela peut se produire si le message a été envoyé avant que vous ne vous soyez connecté à votre compte sur cet appareil.\n\nIl est également possible que l'expéditeur ait bloqué votre appareil ou qu'un problème de connexion Internet se soit produit.\n\nÊtes-vous capable de lire le message sur une autre session ? Vous pouvez alors transférer le message à partir de celle-ci ! Allez dans Paramètres > Appareils et assurez-vous que vos appareils se sont vérifiés mutuellement. Lorsque vous ouvrirez le salon la fois suivante et que les deux sessions seront au premier plan, les clés seront transmises automatiquement.\n\nVous ne voulez pas perdre les clés en vous déconnectant ou en changeant d'appareil ? Assurez-vous que vous avez activé la sauvegarde de la discussion dans les paramètres.", - "@noKeyForThisMessage": {}, - "enterRoom": "Entrer dans le salon", - "@enterRoom": {}, - "allSpaces": "Tous les espaces", - "@allSpaces": {}, - "commandHint_markasdm": "Marquer comme salon de messagerie directe", - "@commandHint_markasdm": {}, - "commandHint_markasgroup": "Marquer comme groupe", - "@commandHint_markasgroup": {}, - "confirmMatrixId": "Veuillez confirmer votre identifiant Matrix afin de supprimer votre compte.", - "@confirmMatrixId": {}, - "supposedMxid": "Cela devrait être {mxid}", - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "whyIsThisMessageEncrypted": "Pourquoi ce message est-il illisible ?", - "@whyIsThisMessageEncrypted": {}, - "foregroundServiceRunning": "Cette notification s’affiche lorsque le service au premier plan est en cours d’exécution.", - "@foregroundServiceRunning": {}, - "screenSharingTitle": "Partage d'écran", - "@screenSharingTitle": {}, - "screenSharingDetail": "Vous partagez votre écran dans FuffyChat", - "@screenSharingDetail": {}, - "callingPermissions": "Permissions d'appel", - "@callingPermissions": {}, - "callingAccount": "Compte d'appel", - "@callingAccount": {}, - "callingAccountDetails": "Permet à FluffyChat d'utiliser l'application de numérotation native d'Android.", - "@callingAccountDetails": {}, - "appearOnTop": "Apparaître en haut", - "@appearOnTop": {}, - "appearOnTopDetails": "Permet à l'application d'apparaître en haut de l'écran (non nécessaire si vous avez déjà configuré Fluffychat comme compte d'appel)", - "@appearOnTopDetails": {}, - "otherCallingPermissions": "Microphone, caméra et autres autorisations de FluffyChat", - "@otherCallingPermissions": {}, - "newGroup": "Nouveau groupe", - "@newGroup": {}, - "newSpace": "Nouvel espace", - "@newSpace": {}, - "enterSpace": "Entrer dans l’espace", - "@enterSpace": {}, - "numChats": "{number} discussions", - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "hideUnimportantStateEvents": "Masquer les événements d'état sans importance", - "@hideUnimportantStateEvents": {}, - "doNotShowAgain": "Ne plus afficher", - "@doNotShowAgain": {}, - "commandHint_googly": "Envoyer des yeux écarquillés", - "@commandHint_googly": {}, - "commandHint_cuddle": "Envoyer un câlin", - "@commandHint_cuddle": {}, - "commandHint_hug": "Envoyer une accolade", - "@commandHint_hug": {}, - "googlyEyesContent": "{senderName} vous envoie des yeux écarquillés", - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "cuddleContent": "{senderName} vous fait un câlin", - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "hugContent": "{senderName} vous fait une accolade", - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "wasDirectChatDisplayName": "Discussion vide (était {oldDisplayName})", - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "encryptThisChat": "Chiffrer cette discussion", - "@encryptThisChat": {}, - "sorryThatsNotPossible": "Désolé, ce n'est pas possible", - "@sorryThatsNotPossible": {}, - "deviceKeys": "Clés de l’appareil :", - "@deviceKeys": {}, - "startFirstChat": "Commencez votre première discussion", - "@startFirstChat": {}, - "newSpaceDescription": "Les espaces vous permettent de consolider vos conversations et de construire des communautés privées ou publiques.", - "@newSpaceDescription": {}, - "disableEncryptionWarning": "Pour des raisons de sécurité, vous ne pouvez pas désactiver le chiffrement dans une discussion s'il a été activé avant.", - "@disableEncryptionWarning": {}, - "reopenChat": "Rouvrir la discussion", - "@reopenChat": {}, - "noOtherDevicesFound": "Aucun autre appareil trouvé", - "@noOtherDevicesFound": {}, - "noBackupWarning": "Attention ! Sans l'activation de la sauvegarde de la discussion, vous perdrez l'accès à vos messages chiffrés. Il est fortement recommandé d'activer la sauvegarde de la discussion avant de se déconnecter.", - "@noBackupWarning": {}, - "fileHasBeenSavedAt": "Le fichier a été enregistré dans {path}", - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "fileIsTooBigForServer": "Le serveur signale que le fichier est trop volumineux pour être envoyé.", - "@fileIsTooBigForServer": {}, - "jumpToLastReadMessage": "Aller au dernier message lu", - "@jumpToLastReadMessage": {}, - "readUpToHere": "Lisez jusqu’ici", - "@readUpToHere": {}, - "allRooms": "Toutes les conversations groupées", - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "chatPermissions": "Permissions du salon", - "@chatPermissions": {}, - "importFromZipFile": "Importer depuis un fichier .zip", - "@importFromZipFile": {}, - "inviteContactToGroupQuestion": "Voulez-vous inviter {contact} au salon \"{groupName}\" ?", - "@inviteContactToGroupQuestion": {}, - "importEmojis": "Importer des Emojis", - "@importEmojis": {}, - "notAnImage": "Pas un fichier image", - "@notAnImage": {}, - "chatDescriptionHasBeenChanged": "La description du salon a changé", - "@chatDescriptionHasBeenChanged": {}, - "createGroup": "Créer un groupe", - "@createGroup": {}, - "importNow": "Importer maintenant", - "@importNow": {}, - "@reportErrorDescription": {}, - "@setColorTheme": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@tryAgain": {}, - "@unbanUserDescription": {}, - "@messagesStyle": {}, - "@chatDescription": {}, - "@pushNotificationsNotAvailable": {}, - "@invalidServerName": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@setChatDescription": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@optionalRedactReason": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@redactMessageDescription": {}, - "@invalidInput": {}, - "@report": {}, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@invitePrivateChat": {}, - "@noChatDescriptionYet": {}, - "@learnMore": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@profileNotFound": {}, - "@jump": {}, - "@shareInviteLink": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@replace": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@kickUserDescription": {}, - "@invite": {}, - "@openLinkInBrowser": {} -} \ No newline at end of file + "@@locale": "fr", + "@@last_modified": "2021-08-14 12:41:10.051787", + "about": "À propos", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Accepter", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} a accepté l'invitation", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Compte", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} a activé le chiffrement de bout en bout", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Ajouter un courriel", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Ajouter à l'espace", + "@addToSpace": {}, + "admin": "Administrateur", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "adresse", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "Tout", + "@all": { + "type": "text", + "placeholders": {} + }, + "allChats": "Toutes les discussions", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} a répondu à l'appel", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Tout le monde peut rejoindre", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "appLock": "Verrouillage de l’application", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "archive": "Archiver", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Les invités peuvent-i·e·ls rejoindre", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Êtes-vous sûr·e ?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Voulez-vous vraiment vous déconnecter ?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Pour pouvoir faire signer l'autre personne, veuillez entrer la phrase de passe de votre trousseau sécurisé ou votre clé de récupération.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Accepter cette demande de vérification de la part de {username} ?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "autoplayImages": "Lire automatiquement les autocollants et les émojis animés", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "badServerLoginTypesException": "Le serveur d'accueil prend en charge les types de connexion :\n{serverVersions}\nMais cette application ne prend en charge que :\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "Le serveur d'accueil prend en charge les versions des spécifications :\n{serverVersions}\nMais cette application ne prend en charge que {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "Bannir de la discussion", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Banni", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} a banni {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Bloquer l'appareil", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Bloqué", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Messages de bot", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "Annuler", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "Impossible d'ouvrir l'URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changeDeviceName": "Modifier le nom de l'appareil", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} a changé l'image de la discussion", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} a changé la description de la discussion en : '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} a renommé la discussion en : '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} a changé les permissions de la discussion", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} a changé son nom en : '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} a changé les règles d'accès à la discussion pour les invités", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} a changé les règles d'accès à la discussion pour les invités en : {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} a changé la visibilité de l'historique de la discussion", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} a changé la visibilité de l'historique de la discussion en : {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} a changé les règles d'accès à la discussion", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} a changé les règles d'accès à la discussion en : {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} a changé son avatar", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} a changé les adresses du salon", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} a changé le lien d'invitation", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Changer de mot de passe", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Changer le serveur d'accueil", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Changez votre style", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Changer le nom du groupe", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Changer votre avatar", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Le chiffrement a été corrompu", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Discussion", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Sauvegarde des discussions", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "Vos anciens messages sont sécurisés par une clé de récupération. Veillez à ne pas la perdre.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Détails de la discussion", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "La discussion a été ajoutée à cet espace", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Discussions", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Choisissez un mot de passe fort", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Effacer les archives", + "@clearArchive": {}, + "close": "Fermer", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Bannir l'utilisateur/trice donné(e) de ce salon", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Envoyer du texte au format HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Inviter l'utilisateur/trice donné(e) dans ce salon", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Rejoindre le salon donné", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Supprime l'utilisateur/trice donné(e) de ce salon", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Quitter ce salon", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Décrivez-vous", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Définir votre image pour ce salon (par mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Définir votre nom d'affichage pour ce salon", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Définir le niveau de puissance de l'utilisateur/trice donné(e) (par défaut : 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Envoyer du texte non formaté", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Envoyer une réponse en tant que réaction", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Envoyer du texte", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Débannir l'utilisateur/trice donné(e) de ce salon", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Commande invalide", + "@commandInvalid": { + "type": "text" + }, + "commandMissing": "{command} n'est pas une commande.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Veuillez comparer les émojis", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Veuillez comparer les chiffres", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Configurer la discussion", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "Confirmer", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Se connecter", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Le contact a été invité au groupe", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Contient un nom d'affichage", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Contient un nom d'utilisateur·ice", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "Le contenu a été signalé aux administrateurs du serveur", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Copié dans le presse-papier", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Copier", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Copier dans le presse-papiers", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Impossible de déchiffrer le message : {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} participant(s)", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Créer", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "💬 {username} a créé la discussion", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewSpace": "Nouvel espace", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Actif en ce moment", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Sombre", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Cette opération va désactiver votre compte. Une fois cette action effectuée, aucun retour en arrière n'est possible ! Êtes-vous sûr·e ?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Niveau d'autorisation par défaut", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "delete": "Supprimer", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Supprimer le compte", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Supprimer le message", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Appareil", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "Identifiant de l'appareil", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Appareils", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "Discussions directes", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Renommage effectué", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Télécharger le fichier", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "Modifier", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Modifier les serveurs bloqués", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Changer de nom d'affichage", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Modifier les adresses du salon", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Modifier l'avatar du salon", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Cette émoticône existe déjà !", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Raccourci d'émoticône invalide !", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Packs d'émoticônes pour le salon", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Paramètre des émoticônes", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Raccourci de l'émoticône", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Vous devez sélectionner un raccourci d'émoticône et une image !", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Discussion vide", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Activer globalement le pack d'émoticônes", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Activer le chiffrement", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Vous ne pourrez plus désactiver le chiffrement. Êtes-vous sûr(e) ?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Chiffré", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryption": "Chiffrement", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Le chiffrement n'est pas activé", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} a mis fin à l'appel", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "Saisissez une adresse de courriel", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Renseignez votre serveur d'accueil", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "Erreur lors de l'obtention de la localisation : {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "everythingReady": "Tout est prêt !", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Extrêmement offensant", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "fileName": "Nom du ficher", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Taille de la police", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "Transférer", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "À partir de l'entrée dans le salon", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "À partir de l'invitation", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Aller dans le nouveau salon", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Groupe", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Le groupe est public", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "Groupes", + "@groups": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Groupe avec {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "Les invités ne peuvent pas rejoindre", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Les invités peuvent rejoindre", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} a annulé l'invitation de {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Aide", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Cacher les évènements supprimés", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Cacher les évènements inconnus", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "À quel point ce contenu est-il offensant ?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "Identifiant", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Identité", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Ignorer", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Utilisateur·ices ignoré·es", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "J'ai cliqué sur le lien", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Non offensant", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Inviter un contact", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Inviter un contact dans {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Invité·e", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "📩 {username} a invité {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Uniquement les utilisateur·ices invité·es", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Inviter pour moi", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} vous a invité·e sur FluffyChat.\n1. Visiter fluffychat.im et installer l'application\n2. Inscrivez-vous ou connectez-vous\n3. Ouvrez le lien d'invitation :\n{link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "est en train d'écrire…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} a rejoint la discussion", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Rejoindre le salon", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "👞 {username} a expulsé {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "🙅 {username} a expulsé et banni {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Expulser de la discussion", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Vu·e pour la dernière fois : {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Partir", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "A quitté la discussion", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licence", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Clair", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Charger {count} participant·es de plus", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Chargement… Veuillez patienter.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Charger plus…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "locationDisabledNotice": "Les services de localisation sont désactivés. Il est nécessaire de les activer avant de pouvoir partager votre localisation.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "L'application n'a pas la permission d'accéder à votre localisation. Merci de l'accorder afin de pouvoir partager votre localisation.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "login": "Se connecter", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Se connecter à {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Se déconnecter", + "@logout": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Changements de membres", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "Mentionner", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "Messages", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "Modérateur·rice", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Mettre la discussion en sourdine", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Pour l'instant, vous avez besoin de Pantalaimon pour utiliser le chiffrement de bout en bout.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "Nouvelle discussion", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nouveau message dans FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Nouvelle demande de vérification !", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Suivant", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "Non", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Aucune connexion au serveur", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Aucune émoticône trouvée. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Vous pouvez activer le chiffrement seulement quand le salon n'est plus accessible au public.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Firebase Cloud Messaging ne semble pas être disponible sur votre appareil. Pour continuer à recevoir des notifications poussées, nous vous recommandons d'installer ntfy. Avec ntfy ou un autre fournisseur Unified Push, vous pouvez recevoir des notifications poussées de manière sécurisée. Vous pouvez télécharger ntfy sur le PlayStore ou sur F-Droid.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} n'est pas un serveur Matrix, souhaitez-vous utiliser {server2} à la place ?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "none": "Aucun", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Vous n'avez pas encore ajouté de moyen pour récupérer votre mot de passe.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Aucune permission", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Aucun salon trouvé…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "Notifications", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notifications activées pour ce compte", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count} utilisateur·ices écrivent…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "obtainingLocation": "Obtention de la localisation…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "offensive": "Offensant", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "Hors ligne", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "Valider", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "En ligne", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Oups ! Une erreur s'est malheureusement produite lors du réglage des notifications.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oups, un problème est survenu…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Ouvrez l'application pour lire le message", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Ouvrir l'appareil photo", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "openInMaps": "Ouvrir dans maps", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "or": "Ou", + "@or": { + "type": "text", + "placeholders": {} + }, + "participant": "Participant(e)", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "Phrase de passe ou clé de récupération", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Mot de passe", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Mot de passe oublié", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Le mot de passe a été modifié", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Récupération du mot de passe", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "Personnes", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Choisir une image", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Épingler", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Lire {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChoose": "Veuillez choisir", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Veuillez choisir un code d’accès", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Veuillez cliquer sur le lien contenu dans le courriel puis continuez.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Veuillez saisir 4 chiffres ou laisser vide pour désactiver le verrouillage de l’application.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Renseignez votre mot de passe", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Veuillez saisir votre code PIN", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Renseignez votre nom d'utilisateur·ice", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Veuillez suivre les instructions sur le site et appuyer sur Suivant.", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Vie privée", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Salons publics", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Règles de notifications", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "reason": "Motif", + "@reason": { + "type": "text", + "placeholders": {} + }, + "recording": "Enregistrement", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} a supprimé un évènement", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactMessage": "Supprimer un message", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "register": "S'inscrire", + "@register": { + "type": "text", + "placeholders": {} + }, + "reject": "Refuser", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} a refusé l'invitation", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Rejoindre de nouveau", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Supprimer", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Supprimer tous les autres appareils", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Supprimé par {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Supprimer l'appareil", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Débannissement de la discussion", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Supprimer votre avatar", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Afficher les contenus riches des messages", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Remplacer le salon par une nouvelle version", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "Répondre", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Signaler un message", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Demander la permission", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Le salon a été mis à niveau", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Version du salon", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Enregistrer le fichier", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "search": "Rechercher", + "@search": { + "type": "text", + "placeholders": {} + }, + "security": "Sécurité", + "@security": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Vu par {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "send": "Envoyer", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Envoyer un message", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAsText": "Envoyer un texte", + "@sendAsText": { + "type": "text" + }, + "sendAudio": "Envoyer un fichier audio", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Envoyer un fichier", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Envoyer une image", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Envoyer des messages", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Envoyer le fichier original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Envoyer un autocollant", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Envoyer une vidéo", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "📁 {username} a envoyé un fichier", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "🎤 {username} a envoyé un fichier audio", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "🖼️ {username} a envoyé une image", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "😊 {username} a envoyé un autocollant", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "🎥 {username} a envoyé une vidéo", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} a envoyé des informations sur l'appel", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setAsCanonicalAlias": "Définir comme adresse principale", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "Définir des émoticônes personnalisées", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Créer un lien d'invitation", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Définir le niveau de permissions", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Définir le statut", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Paramètres", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Partager", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} a partagé sa position", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "shareLocation": "Partager la localisation", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "showPassword": "Afficher le mot de passe", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Authentification unique", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "skip": "Ignorer", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Code source", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "L'espace est public", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Nom de l'espace", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} a démarré un appel", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "status": "Statut", + "@status": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Comment allez-vous aujourd'hui ?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Soumettre", + "@submit": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronisation... Veuillez patienter.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Système", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Elles ne correspondent pas", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Elles correspondent", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Activer/désactiver en favori", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Activer/désactiver la sourdine", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Marquer comme lu / non lu", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Trop de requêtes. Veuillez réessayer plus tard !", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfert à partir d'un autre appareil", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Retenter l'envoi", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Indisponible", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} a annulé le bannissement de {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "Retirer le blocage sur l'appareil", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Appareil inconnu", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algorithme de chiffrement inconnu", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Événement de type inconnu : '{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unmuteChat": "Retirer la sourdine de la discussion", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Désépingler", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 discussion non lue} other{{unreadCount} discussions non lues}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "userAndOthersAreTyping": "{username} et {count} autres sont en train d'écrire…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} et {username2} sont en train d'écrire…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} est en train d'écrire…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "🚪 {username} a quitté la discussion", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nom d'utilisateur·ice", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} a envoyé un évènement de type {type}", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verified": "Vérifié", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verify": "Vérifier", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Commencer la vérification", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "La vérification a été effectuée avec succès !", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Vérification de l'autre compte", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Appel vidéo", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilité de l'historique de la discussion", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible pour tous les participant·es", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Visible pour tout le monde", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Message vocal", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "En attente de l'acceptation de la demande par le partenaire…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Image de fond :", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "Attention !", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Nous vous avons envoyé un courriel", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Qui peut faire quelle action", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Qui est autorisé·e à rejoindre ce groupe", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Pourquoi voulez-vous le signaler ?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Effacer la sauvegarde de votre discussion pour créer une nouvelle clé de récupération ?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Grâce à ces adresses, vous pouvez récupérer votre mot de passe si vous en avez besoin.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Écrivez un message…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Oui", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Vous", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Vous ne participez plus à cette discussion", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Vous avez été banni·e de cette discussion", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Votre clé publique", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "scanQrCode": "Scanner un code QR", + "@scanQrCode": {}, + "sendOnEnter": "Envoyer avec Entrée", + "@sendOnEnter": {}, + "homeserver": "Serveur d'accueil", + "@homeserver": {}, + "serverRequiresEmail": "Ce serveur doit valider votre adresse électronique pour l'inscription.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(BETA) Activer les comptes multiples sur cet appareil", + "@enableMultiAccounts": {}, + "bundleName": "Nom du groupe", + "@bundleName": {}, + "removeFromBundle": "Retirer de ce groupe", + "@removeFromBundle": {}, + "addToBundle": "Ajouter au groupe", + "@addToBundle": {}, + "editBundlesForAccount": "Modifier les groupes pour ce compte", + "@editBundlesForAccount": {}, + "addAccount": "Ajouter un compte", + "@addAccount": {}, + "oneClientLoggedOut": "Un de vos clients a été déconnecté", + "@oneClientLoggedOut": {}, + "link": "Lien", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Votre sauvegarde de la discussion a été mise en place.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Non vérifié", + "@unverified": {}, + "repeatPassword": "Répétez le mot de passe", + "@repeatPassword": {}, + "messageType": "Type de message", + "@messageType": {}, + "openGallery": "Ouvrir dans la Galerie", + "@openGallery": {}, + "time": "Heure", + "@time": {}, + "sender": "Expéditeur/trice", + "@sender": {}, + "messageInfo": "Informations sur le message", + "@messageInfo": {}, + "removeFromSpace": "Supprimer de l’espace", + "@removeFromSpace": {}, + "addToSpaceDescription": "Sélectionnez un espace pour y ajouter cette discussion.", + "@addToSpaceDescription": {}, + "start": "Commencer", + "@start": {}, + "commandHint_create": "Créer un groupe de discussion vide\nUtilisez --no-encryption pour désactiver le chiffrement", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Abandonner la session", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_clearcache": "Vider le cache", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_dm": "Commencer une discussion directe\nUtilisez --no-encryption pour désactiver le chiffrement", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "openVideoCamera": "Ouvrir la caméra pour une vidéo", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "publish": "Publier", + "@publish": {}, + "videoWithSize": "Vidéo ({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "dismiss": "Rejeter", + "@dismiss": {}, + "markAsRead": "Marquer comme lu", + "@markAsRead": {}, + "reportUser": "Signaler l'utilisateur/trice", + "@reportUser": {}, + "openChat": "Ouvrir la discussion", + "@openChat": {}, + "reactedWith": "{sender} a réagi avec {reaction}", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "emojis": "Émojis", + "@emojis": {}, + "placeCall": "Passer un appel", + "@placeCall": {}, + "voiceCall": "Appel vocal", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Version d'Android non prise en charge", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Cette fonctionnalité nécessite une nouvelle version d'Android. Veuillez vérifier les mises à jour ou la prise en charge de Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "pinMessage": "Épingler au salon", + "@pinMessage": {}, + "confirmEventUnpin": "Voulez-vous vraiment désépingler définitivement l'événement ?", + "@confirmEventUnpin": {}, + "videoCallsBetaWarning": "Veuillez noter que les appels vidéo sont actuellement en version bêta. Ils peuvent ne pas fonctionner comme prévu ou ne oas fonctionner du tout sur toutes les plateformes.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Appels vidéo expérimentaux", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Courriel ou identifiant", + "@emailOrUsername": {}, + "switchToAccount": "Passer au compte {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "nextAccount": "Compte suivant", + "@nextAccount": {}, + "previousAccount": "Compte précédent", + "@previousAccount": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Personnalisé", + "@widgetCustom": {}, + "widgetUrlError": "Ceci n'est pas un lien valide.", + "@widgetUrlError": {}, + "widgetNameError": "Veuillez fournir un nom d'affichage.", + "@widgetNameError": {}, + "errorAddingWidget": "Erreur lors de l'ajout du widget.", + "@errorAddingWidget": {}, + "widgetEtherpad": "Note textuelle", + "@widgetEtherpad": {}, + "addWidget": "Ajouter un widget", + "@addWidget": {}, + "widgetName": "Nom", + "@widgetName": {}, + "widgetVideo": "Vidéo", + "@widgetVideo": {}, + "youRejectedTheInvitation": "Vous avez rejeté l'invitation", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Vous avez rejoint la discussion", + "@youJoinedTheChat": {}, + "youHaveWithdrawnTheInvitationFor": "Vous avez retiré l'invitation pour {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "youAcceptedTheInvitation": "👍 Vous avez accepté l'invitation", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Vous avez banni {user}", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "youInvitedBy": "📩 Vous avez été invité par {user}", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "youInvitedUser": "📩 Vous avez invité {user}", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "youKicked": "👞 Vous avez dégagé {user}", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "youKickedAndBanned": "🙅 Vous avez dégagé et banni {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "youUnbannedUser": "Vous avez débanni {user}", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "separateChatTypes": "Séparer les discussions directes et les groupes", + "@separateChatTypes": { + "type": "text", + "placeholders": {} + }, + "users": "Utilisateurs/trices", + "@users": {}, + "storeInAndroidKeystore": "Stocker dans Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Stocker dans Apple KeyChain", + "@storeInAppleKeyChain": {}, + "user": "Utilisateur/trice", + "@user": {}, + "custom": "Personnalisé", + "@custom": {}, + "hydrate": "Restaurer à partir du fichier de sauvegarde", + "@hydrate": {}, + "dehydrateWarning": "Cette action ne peut pas être annulée. Assurez-vous d'enregistrer convenablement le fichier de sauvegarde.", + "@dehydrateWarning": {}, + "dehydrateTorLong": "Pour les utilisateurs/trices de TOR, il est recommandé d'exporter la session avant de fermer la fenêtre.", + "@dehydrateTorLong": {}, + "recoveryKey": "Clé de récupération", + "@recoveryKey": {}, + "recoveryKeyLost": "Clé de récupération perdue ?", + "@recoveryKeyLost": {}, + "indexedDbErrorLong": "Le stockage des messages n'est malheureusement pas activé par défaut en mode privé.\nVeuillez consulter :\n - about:config\n - Définir dom.indexedDB.privateBrowsing.enabled à « vrai ».\nSinon, il n'est pas possible d'exécuter FluffyChat.", + "@indexedDbErrorLong": {}, + "saveKeyManuallyDescription": "Enregistrer cette clé manuellement en déclenchant la boîte de dialogue de partage du système ou le presse-papiers.", + "@saveKeyManuallyDescription": {}, + "storeInSecureStorageDescription": "Stocker la clé de récupération dans un espace sécurisé de cet appareil.", + "@storeInSecureStorageDescription": {}, + "indexedDbErrorTitle": "Problèmes relatifs au mode privé", + "@indexedDbErrorTitle": {}, + "dehydrate": "Exporter la session et effacer l'appareil", + "@dehydrate": {}, + "dehydrateTor": "Utilisateurs/trices de TOR : Exporter la session", + "@dehydrateTor": {}, + "hydrateTor": "Utilisateurs/trices de TOR : Importer une session exportée", + "@hydrateTor": {}, + "hydrateTorLong": "Vous avez exporté votre session la dernière fois sur TOR ? Importez-la rapidement et continuez à discuter.", + "@hydrateTorLong": {}, + "pleaseEnterRecoveryKey": "Veuillez saisir votre clé de récupération :", + "@pleaseEnterRecoveryKey": {}, + "pleaseEnterRecoveryKeyDescription": "Pour déverrouiller vos anciens messages, veuillez entrer votre clé de récupération qui a été générée lors d'une session précédente. Votre clé de récupération n'est PAS votre mot de passe.", + "@pleaseEnterRecoveryKeyDescription": {}, + "unlockOldMessages": "Déverrouiller les anciens messages", + "@unlockOldMessages": {}, + "storeSecurlyOnThisDevice": "Stocker de manière sécurisé sur cet appareil", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} fichiers", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "noKeyForThisMessage": "Cela peut se produire si le message a été envoyé avant que vous ne vous soyez connecté à votre compte sur cet appareil.\n\nIl est également possible que l'expéditeur ait bloqué votre appareil ou qu'un problème de connexion Internet se soit produit.\n\nÊtes-vous capable de lire le message sur une autre session ? Vous pouvez alors transférer le message à partir de celle-ci ! Allez dans Paramètres > Appareils et assurez-vous que vos appareils se sont vérifiés mutuellement. Lorsque vous ouvrirez le salon la fois suivante et que les deux sessions seront au premier plan, les clés seront transmises automatiquement.\n\nVous ne voulez pas perdre les clés en vous déconnectant ou en changeant d'appareil ? Assurez-vous que vous avez activé la sauvegarde de la discussion dans les paramètres.", + "@noKeyForThisMessage": {}, + "enterRoom": "Entrer dans le salon", + "@enterRoom": {}, + "allSpaces": "Tous les espaces", + "@allSpaces": {}, + "commandHint_markasdm": "Marquer comme salon de messages directs pour l'identifiant Matrix indiqué", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Marquer comme groupe", + "@commandHint_markasgroup": {}, + "confirmMatrixId": "Veuillez confirmer votre identifiant Matrix afin de supprimer votre compte.", + "@confirmMatrixId": {}, + "supposedMxid": "Cela devrait être {mxid}", + "@supposedMxid": { + "type": "text", + "placeholders": { + "mxid": {} + } + }, + "whyIsThisMessageEncrypted": "Pourquoi ce message est-il illisible ?", + "@whyIsThisMessageEncrypted": {}, + "foregroundServiceRunning": "Cette notification s’affiche lorsque le service au premier plan est en cours d’exécution.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "Partage d'écran", + "@screenSharingTitle": {}, + "screenSharingDetail": "Vous partagez votre écran dans FuffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Permissions d'appel", + "@callingPermissions": {}, + "callingAccount": "Compte d'appel", + "@callingAccount": {}, + "callingAccountDetails": "Permet à FluffyChat d'utiliser l'application de numérotation native d'Android.", + "@callingAccountDetails": {}, + "appearOnTop": "Apparaître en haut", + "@appearOnTop": {}, + "appearOnTopDetails": "Permet à l'application d'apparaître en haut de l'écran (non nécessaire si vous avez déjà configuré Fluffychat comme compte d'appel)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Microphone, caméra et autres autorisations de FluffyChat", + "@otherCallingPermissions": {}, + "newGroup": "Nouveau groupe", + "@newGroup": {}, + "newSpace": "Nouvel espace", + "@newSpace": {}, + "enterSpace": "Entrer dans l’espace", + "@enterSpace": {}, + "numChats": "{number} discussions", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "hideUnimportantStateEvents": "Masquer les événements d'état sans importance", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Ne plus afficher", + "@doNotShowAgain": {}, + "commandHint_googly": "Envoyer des yeux écarquillés", + "@commandHint_googly": {}, + "commandHint_cuddle": "Envoyer un câlin", + "@commandHint_cuddle": {}, + "commandHint_hug": "Envoyer une accolade", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} vous envoie des yeux écarquillés", + "@googlyEyesContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "cuddleContent": "{senderName} vous fait un câlin", + "@cuddleContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "hugContent": "{senderName} vous fait une accolade", + "@hugContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "wasDirectChatDisplayName": "Discussion vide (était {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "text", + "placeholders": { + "oldDisplayName": {} + } + }, + "encryptThisChat": "Chiffrer cette discussion", + "@encryptThisChat": {}, + "sorryThatsNotPossible": "Désolé, ce n'est pas possible", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Clés de l’appareil :", + "@deviceKeys": {}, + "startFirstChat": "Commencez votre première discussion", + "@startFirstChat": {}, + "newSpaceDescription": "Les espaces vous permettent de consolider vos conversations et de construire des communautés privées ou publiques.", + "@newSpaceDescription": {}, + "disableEncryptionWarning": "Pour des raisons de sécurité, vous ne pouvez pas désactiver le chiffrement dans une discussion s'il a été activé avant.", + "@disableEncryptionWarning": {}, + "reopenChat": "Rouvrir la discussion", + "@reopenChat": {}, + "noOtherDevicesFound": "Aucun autre appareil trouvé", + "@noOtherDevicesFound": {}, + "noBackupWarning": "Attention ! Sans l'activation de la sauvegarde de la discussion, vous perdrez l'accès à vos messages chiffrés. Il est fortement recommandé d'activer la sauvegarde de la discussion avant de se déconnecter.", + "@noBackupWarning": {}, + "fileHasBeenSavedAt": "Le fichier a été enregistré dans {path}", + "@fileHasBeenSavedAt": { + "type": "text", + "placeholders": { + "path": {} + } + }, + "fileIsTooBigForServer": "Le serveur signale que le fichier est trop volumineux pour être envoyé.", + "@fileIsTooBigForServer": {}, + "jumpToLastReadMessage": "Aller au dernier message lu", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Lisez jusqu’ici", + "@readUpToHere": {}, + "allRooms": "Tous les groupes de discussion", + "@allRooms": { + "type": "text", + "placeholders": {} + }, + "chatPermissions": "Permissions du salon", + "@chatPermissions": {}, + "importFromZipFile": "Importer depuis un fichier .zip", + "@importFromZipFile": {}, + "inviteContactToGroupQuestion": "Voulez-vous inviter {contact} au salon \"{groupName}\" ?", + "@inviteContactToGroupQuestion": {}, + "importEmojis": "Importer des Emojis", + "@importEmojis": {}, + "notAnImage": "Pas un fichier image.", + "@notAnImage": {}, + "chatDescriptionHasBeenChanged": "La description du salon a changé", + "@chatDescriptionHasBeenChanged": {}, + "createGroup": "Créer un groupe", + "@createGroup": {}, + "importNow": "Importer maintenant", + "@importNow": {}, + "tryAgain": "Nouvelle tentative", + "@tryAgain": {}, + "blockedUsers": "Utilisateurs/trices bloqués", + "@blockedUsers": {}, + "redactMessageDescription": "Le message sera modifié pour tous les participants de cette conversation. Il n'est pas possible de revenir en arrière.", + "@redactMessageDescription": {}, + "redactedBy": "Modifié par {username}", + "@redactedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "directChat": "Discussion directe", + "@directChat": {}, + "optionalRedactReason": "(Facultatif) Raison de la modification de ce message...", + "@optionalRedactReason": {}, + "subspace": "Sous-espace", + "@subspace": {}, + "sendTypingNotifications": "Envoyer des notifications de frappe", + "@sendTypingNotifications": {}, + "replace": "Remplacer", + "@replace": {}, + "emoteKeyboardNoRecents": "Les émoticônes récemment utilisées apparaîtront ici...", + "@emoteKeyboardNoRecents": { + "type": "text", + "placeholders": {} + }, + "nothingFound": "Rien n'a été trouvé...", + "@nothingFound": {}, + "chatDescription": "Description de la discussion", + "@chatDescription": {}, + "invalidServerName": "Nom de serveur invalide", + "@invalidServerName": {}, + "addChatDescription": "Ajouter une description à la discussion...", + "@addChatDescription": {}, + "shareInviteLink": "Partager un lien d'invitation", + "@shareInviteLink": {}, + "openLinkInBrowser": "Ouvrir le lien dans le navigateur", + "@openLinkInBrowser": {}, + "setTheme": "Définir le thème :", + "@setTheme": {}, + "setColorTheme": "Définir la couleur du thème :", + "@setColorTheme": {}, + "databaseMigrationBody": "Veuillez patienter. Cela peut prendre un moment.", + "@databaseMigrationBody": {}, + "searchForUsers": "Rechercher des @utilisateurs/trices...", + "@searchForUsers": {}, + "passwordsDoNotMatch": "Les mots de passe ne correspondent pas", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Votre mot de passe saisi est erroné", + "@passwordIsWrong": {}, + "publicLink": "Lien public", + "@publicLink": {}, + "joinSpace": "Rejoindre l'espace", + "@joinSpace": {}, + "publicSpaces": "Espaces publics", + "@publicSpaces": {}, + "addChatOrSubSpace": "Ajouter une discussion ou un sous-espace", + "@addChatOrSubSpace": {}, + "thisDevice": "Cet appareil :", + "@thisDevice": {}, + "sendReadReceipts": "Envoyer des accusés de réception", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Les autres participants à une discussion peuvent voir que vous êtes en train de taper un nouveau message.", + "@sendTypingNotificationsDescription": {}, + "verifyOtherDevice": "🔐 Vérifier l'autre appareil", + "@verifyOtherDevice": {}, + "databaseBuildErrorBody": "La base de données SQlite ne peut pas être créée. L'application essaie d'utiliser la base de données existante pour le moment. Veuillez signaler cette erreur aux développeurs à {url}. Le message d'erreur est le suivant : {error}", + "@databaseBuildErrorBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "startConversation": "Démarrer la conversation", + "@startConversation": {}, + "formattedMessagesDescription": "Affichez le contenu formaté des messages comme du texte en gras à l'aide de markdown.", + "@formattedMessagesDescription": {}, + "incomingMessages": "Messages entrants", + "@incomingMessages": {}, + "acceptedKeyVerification": "{sender} a accepté la vérification de clé", + "@acceptedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "pleaseTryAgainLaterOrChooseDifferentServer": "Veuillez réessayer plus tard ou choisir un autre serveur.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "inviteGroupChat": "📨 Inviter à une discussion de groupe", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Inviter à une discussion privée", + "@invitePrivateChat": {}, + "jump": "Sauter", + "@jump": {}, + "signInWithPassword": "Se connecter avec mot de passe", + "@signInWithPassword": {}, + "hideMemberChangesInPublicChats": "Masquer les modifications de membres dans les discussions publiques", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Ne pas afficher dans la chronologie de la discussion si quelqu'un rejoint ou quitte une discussion publique afin d'améliorer la lisibilité.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Aperçu", + "@overview": {}, + "notifyMeFor": "Me notifier pour", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Paramètres de récupération de mot de passe", + "@passwordRecoverySettings": {}, + "hasKnocked": "🚪 {user} a frappé", + "@hasKnocked": { + "placeholders": { + "user": {} + } + }, + "canceledKeyVerification": "{sender} a annulé la vérification de clé", + "@canceledKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "unreadChatsInApp": "{appname} : {unread} discussions non lus", + "@unreadChatsInApp": { + "type": "text", + "placeholders": { + "appname": {}, + "unread": {} + } + }, + "requestedKeyVerification": "{sender} a demandé une vérification de clé", + "@requestedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "startedKeyVerification": "{sender} a lancé la vérification de clé", + "@startedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "discover": "Découvrir", + "@discover": {}, + "usersMustKnock": "Les utilisateurs/trices doivent frapper", + "@usersMustKnock": {}, + "noOneCanJoin": "Personne ne peut rejoindre", + "@noOneCanJoin": {}, + "knock": "Frapper à la porte", + "@knock": {}, + "hidePresences": "Cacher la liste des statuts ?", + "@hidePresences": {}, + "appLockDescription": "Verrouiller l'application avec un code PIN lorsqu'elle n'est pas utilisée", + "@appLockDescription": {}, + "globalChatId": "Identifiant global de la discussion", + "@globalChatId": {}, + "accessAndVisibility": "Accès et visibilité", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Qui est autorisé à rejoindre cette discussion et comment la discussion peut être découverte.", + "@accessAndVisibilityDescription": {}, + "calls": "Appels", + "@calls": {}, + "customEmojisAndStickers": "Émoticônes et autocollants personnalisés", + "@customEmojisAndStickers": {}, + "hideRedactedMessages": "Cacher les messages édités", + "@hideRedactedMessages": {}, + "pleaseEnterYourCurrentPassword": "Veuillez saisir votre mot de passe actuel", + "@pleaseEnterYourCurrentPassword": {}, + "swipeRightToLeftToReply": "Glisser de droite à gauche pour répondre", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "hideRedactedMessagesBody": "Si quelqu'un modifie un message, celui-ci ne sera plus visible dans la discussion.", + "@hideRedactedMessagesBody": {}, + "customEmojisAndStickersBody": "Ajoutez ou partagez des émoticônes ou autocollants personnalisés qui peuvent être utilisés dans n'importe quelle discussion.", + "@customEmojisAndStickersBody": {}, + "blockListDescription": "Vous pouvez bloquer des utilisateurs/trices qui vous dérangent. Vous ne pourrez plus recevoir aucun message ou invitation à un salon d'utilisateurs/trices figurant sur votre liste de blocage personnelle.", + "@blockListDescription": {}, + "blockUsername": "Ignorer le nom d'utilisateur/trice", + "@blockUsername": {}, + "hideInvalidOrUnknownMessageFormats": "Masquer les formats de message invalides ou inconnus", + "@hideInvalidOrUnknownMessageFormats": {}, + "messagesStyle": "Messages :", + "@messagesStyle": {}, + "redactedByBecause": "Modifié par {username} car : \"{reason}\"", + "@redactedByBecause": { + "type": "text", + "placeholders": { + "username": {}, + "reason": {} + } + }, + "setChatDescription": "Définir la description de la discussion", + "@setChatDescription": {}, + "presenceStyle": "Statut :", + "@presenceStyle": { + "type": "text", + "placeholders": {} + }, + "presencesToggle": "Afficher les messages de statut des autres utilisateurs/trices", + "@presencesToggle": { + "type": "text", + "placeholders": {} + }, + "youInvitedToBy": "📩 Vous avez été invité par lien à :\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": {} + } + }, + "userWouldLikeToChangeTheChat": "{user} souhaite rejoindre la discussion.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": {} + } + }, + "noPublicLinkHasBeenCreatedYet": "Aucun lien public n'a encore été crée", + "@noPublicLinkHasBeenCreatedYet": {}, + "gallery": "Galerie", + "@gallery": {}, + "files": "Fichiers", + "@files": {}, + "sessionLostBody": "Votre session est perdue. Veuillez signaler cette erreur aux développeurs à {url}. Le message d'erreur est le suivant : {error}", + "@sessionLostBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "searchIn": "Rechercher dans la discussion \"{chat}\"...", + "@searchIn": { + "type": "text", + "placeholders": { + "chat": {} + } + }, + "forwardMessageTo": "Transférer le message à {roomName} ?", + "@forwardMessageTo": { + "type": "text", + "placeholders": { + "roomName": {} + } + }, + "sendReadReceiptsDescription": "Les autres participants à une discussion peuvent voir si vous avez lu un message.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Messages formatés", + "@formattedMessages": {}, + "verifyOtherUser": "🔐 Vérifier l'autre utilisateur/trice", + "@verifyOtherUser": {}, + "searchMore": "Rechercher davantage...", + "@searchMore": {}, + "verifyOtherUserDescription": "Si vous vérifiez un autre utilisateur/trice, vous pouvez être sûr de savoir à qui vous écrivez réellement. 💪\n\nLorsque vous lancez une vérification, vous et l'autre utilisateur/trice verrez une fenêtre contextuelle dans l'application. Vous y verrez alors une série d'émoticônes ou de chiffres que vous devrez comparer.\n\nLa meilleure façon de procéder est de se rencontrer ou de lancer un appel vidéo. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Lorsque vous vérifiez un autre appareil, ces appareils peuvent échanger des clés, ce qui augmente votre sécurité globale. 💪 Lorsque vous lancez une vérification, une fenêtre contextuelle s'affiche dans l'application sur les deux appareils. Vous y verrez alors une série d'émoticônes ou de chiffres que vous devrez comparer. Il est préférable d'avoir les deux appareils à portée de main avant de lancer la vérification. 🤳", + "@verifyOtherDeviceDescription": {}, + "completedKeyVerification": "{sender} a terminé la vérification de clé", + "@completedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "isReadyForKeyVerification": "{sender} est prêt pour la vérification de clé", + "@isReadyForKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "transparent": "Transparent", + "@transparent": {}, + "stickers": "Autocollants", + "@stickers": {}, + "noDatabaseEncryption": "Le chiffrement de la base de données n'est pas supporté sur cette plateforme", + "@noDatabaseEncryption": {}, + "commandHint_ignore": "Ignorer l'identifiant Matrix indiqué", + "@commandHint_ignore": {}, + "commandHint_unignore": "Ne plus ignorer l'identifiant Matrix indiqué", + "@commandHint_unignore": {}, + "thereAreCountUsersBlocked": "Actuellement, il y a {count} utilisateurs/trices bloqués.", + "@thereAreCountUsersBlocked": { + "type": "text", + "count": {} + }, + "restricted": "Limité", + "@restricted": {}, + "knockRestricted": "Frapper à la porte limité", + "@knockRestricted": {}, + "signInWith": "Se connecter avec {provider}", + "@signInWith": { + "type": "text", + "placeholders": { + "provider": {} + } + }, + "groupCanBeFoundViaSearch": "Le groupe peut être trouvé via la recherche", + "@groupCanBeFoundViaSearch": {}, + "groupName": "Nom du groupe", + "@groupName": {}, + "invalidInput": "Entrée invalide !", + "@invalidInput": {}, + "block": "Bloquer", + "@block": {}, + "removeDevicesDescription": "Vous serez déconnecté de cet appareil et ne pourrez plus recevoir de messages.", + "@removeDevicesDescription": {}, + "userRole": "Rôle de l'utilisateur/trice", + "@userRole": {}, + "createNewAddress": "Créer une nouvelle adresse", + "@createNewAddress": {}, + "publicChatAddresses": "Addresses de discussion publiques", + "@publicChatAddresses": {}, + "countChatsAndCountParticipants": "{chats} discussions et {participants} participants", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "space": "Espace", + "@space": {}, + "spaces": "Espaces", + "@spaces": {}, + "noMoreChatsFound": "Aucune autre discussion trouvée...", + "@noMoreChatsFound": {}, + "unread": "Non lu", + "@unread": {}, + "joinedChats": "Discussions rejointes", + "@joinedChats": {}, + "commandHint_sendraw": "Envoyer du JSON brut", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "La base de données est optimisée", + "@databaseMigrationTitle": {}, + "leaveEmptyToClearStatus": "Laisser vide pour effacer votre statut.", + "@leaveEmptyToClearStatus": {}, + "select": "Sélectionner", + "@select": {}, + "reportErrorDescription": "😭 Oh non. Quelque chose s'est mal passé. Si vous le souhaitez, vous pouvez signaler ce bogue aux développeurs.", + "@reportErrorDescription": {}, + "report": "signaler", + "@report": {}, + "wrongPinEntered": "Mauvais code PIN saisi ! Veuillez réessayer dans {seconds} secondes...", + "@wrongPinEntered": { + "type": "text", + "placeholders": { + "seconds": {} + } + }, + "pushNotificationsNotAvailable": "Notifications poussées indisponibles", + "@pushNotificationsNotAvailable": {}, + "yourGlobalUserIdIs": "Votre identifiant utilisateur global est : ", + "@yourGlobalUserIdIs": {}, + "chatCanBeDiscoveredViaSearchOnServer": "La discussion peut être découverte via la recherche sur {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "text", + "placeholders": { + "server": {} + } + }, + "knocking": "Frapper", + "@knocking": {}, + "banUserDescription": "L'utilisateur/trice sera banni de la discussion et ne pourra plus y accéder jusqu'à ce qu'il/elle soit débanni.", + "@banUserDescription": {}, + "unbanUserDescription": "L'utilisateur/trice pourra entrer à nouveau dans la discussion si il/elle le souhaite.", + "@unbanUserDescription": {}, + "kickUserDescription": "L'utilisateur/trice est expulsé de la discussion mais n'est pas banni. Dans les discussions publiques, l'utilisateur/trice peut revenir à tout moment.", + "@kickUserDescription": {}, + "makeAdminDescription": "Une fois que vous aurez nommé cet utilisateur/trice administrateur, vous ne pourrez peut-être plus annuler cette opération, car il disposera alors des mêmes autorisations que vous.", + "@makeAdminDescription": {}, + "newPassword": "Nouveau mot de passe", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Veuillez choisir un mot de passe fort", + "@pleaseChooseAStrongPassword": {}, + "decline": "Refuser", + "@decline": {}, + "initAppError": "Une erreur est survenue pendant l'initialisation de l'application", + "@initAppError": {}, + "markAsUnread": "Marquer comme non lu", + "@markAsUnread": {}, + "wrongRecoveryKey": "Désolé... il ne semble pas s'agir de la bonne clé de récupération.", + "@wrongRecoveryKey": {}, + "searchChatsRooms": "Rechercher des #discussions, @utilisateurs/trices...", + "@searchChatsRooms": {}, + "createGroupAndInviteUsers": "Créer un groupe et inviter des utilisateurs/trices", + "@createGroupAndInviteUsers": {}, + "goToSpace": "Aller dans l'espace : {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "exportEmotePack": "Exporter le pack d'émoticônes au format .zip", + "@exportEmotePack": {}, + "noChatDescriptionYet": "Aucune description de discussion n'a encore été créée.", + "@noChatDescriptionYet": {}, + "invite": "Inviter", + "@invite": {}, + "pleaseEnterANumber": "Veuillez saisir un nombre supérieur à 0", + "@pleaseEnterANumber": {}, + "roomUpgradeDescription": "La discussion sera alors recréé avec la nouvelle version de salon. Tous les participants seront informés qu'ils doivent passer à la nouvelle discussion. Pour en savoir plus sur les versions des salons, consultez le site https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "learnMore": "En savoir plus", + "@learnMore": {}, + "minimumPowerLevel": "{level} est le niveau minimum de droits.", + "@minimumPowerLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "restoreSessionBody": "L'application tente maintenant de restaurer votre session depuis la sauvegarde. Veuillez signaler cette erreur aux développeurs à {url}. Le message d'erreur est le suivant : {error}", + "@restoreSessionBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "profileNotFound": "Cet utilisateur/trice n'a pu être trouvé sur le serveur. Peut-être est-ce un problème de connexion ou l'utilisateur/trice n'existe pas.", + "@profileNotFound": {}, + "archiveRoomDescription": "La discussion sera déplacée dans les archives. Les autres utilisateurs/trices pourront voir que vous avez quitté la discussion.", + "@archiveRoomDescription": {}, + "noUsersFoundWithQuery": "Malheureusement, aucun utilisateur/trice n'a pu être trouvé avec \"{query}\". Veuillez vérifier si vous n'avez pas fait de faute de frappe.", + "@noUsersFoundWithQuery": { + "type": "text", + "placeholders": { + "query": {} + } + } +} From c8257f12553b3e920a3a7ee469aa0ff0fdf2694a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 15 Jul 2024 14:48:37 +0000 Subject: [PATCH 023/106] Translated using Weblate (Turkish) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/tr/ --- assets/l10n/intl_tr.arb | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_tr.arb b/assets/l10n/intl_tr.arb index 5dccad646..0fa7a18f2 100644 --- a/assets/l10n/intl_tr.arb +++ b/assets/l10n/intl_tr.arb @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "yanlış", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." - } + }, + "countChatsAndCountParticipants": "{chats} sohbet ve {participants} katılımcı", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "noMoreChatsFound": "Başka sohbet bulunamadı...", + "@noMoreChatsFound": {}, + "goToSpace": "Alana git: {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "joinedChats": "Katılınan sohbetler", + "@joinedChats": {}, + "unread": "Okunmadı", + "@unread": {}, + "markAsUnread": "Okunmadı olarak işaretle", + "@markAsUnread": {}, + "space": "Alan", + "@space": {}, + "spaces": "Alanlar", + "@spaces": {} } From 91dc8816002fad854c121f4157372190873ac379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?= =?UTF-8?q?=E5=B1=B1?= Date: Tue, 16 Jul 2024 08:57:11 +0000 Subject: [PATCH 024/106] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hans/ --- assets/l10n/intl_zh.arb | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh.arb b/assets/l10n/intl_zh.arb index 70451b958..1e31fdd78 100644 --- a/assets/l10n/intl_zh.arb +++ b/assets/l10n/intl_zh.arb @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "否", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." - } + }, + "noMoreChatsFound": "找不到更多聊天…", + "@noMoreChatsFound": {}, + "joinedChats": "已加入的聊天", + "@joinedChats": {}, + "space": "空间", + "@space": {}, + "spaces": "空间", + "@spaces": {}, + "goToSpace": "转到空间:{space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "标为未读", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} 个聊天和 {participants} 名参与者", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "unread": "未读", + "@unread": {} } From e865bae01f0ab7d8a2ec81c50817450ef92a119e Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 16 Jul 2024 16:03:10 +0000 Subject: [PATCH 025/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 52.1% (335 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 26a6b0fbc..2cd581986 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -316,7 +316,7 @@ "type": "text", "placeholders": {} }, - "compareEmojiMatch": "對比並確認這些表情符合其他那些裝置:", + "compareEmojiMatch": "請你對比這些表情", "@compareEmojiMatch": { "type": "text", "placeholders": {} From fcf76be3f6f0e59f0847d919b1cde50300f69caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E7=81=AB=20Shiranui?= Date: Tue, 16 Jul 2024 16:02:09 +0000 Subject: [PATCH 026/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 52.1% (335 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 2cd581986..319fff975 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -321,7 +321,7 @@ "type": "text", "placeholders": {} }, - "compareNumbersMatch": "比較以下數字,確保它們和另一個裝置上的相同:", + "compareNumbersMatch": "比較以下數字:", "@compareNumbersMatch": { "type": "text", "placeholders": {} @@ -1859,5 +1859,9 @@ "block": "封鎖", "@block": {}, "discover": "探索", - "@discover": {} + "@discover": {}, + "alwaysUse24HourFormat": "否", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + } } From 847f34fa3fcec8e395cc2cc7786d74ce316dc3cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E7=81=AB=20Shiranui?= Date: Tue, 16 Jul 2024 16:04:12 +0000 Subject: [PATCH 027/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 52.3% (336 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 319fff975..4a396f398 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -316,12 +316,12 @@ "type": "text", "placeholders": {} }, - "compareEmojiMatch": "請你對比這些表情", + "compareEmojiMatch": "請對比這些表情", "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "compareNumbersMatch": "比較以下數字:", + "compareNumbersMatch": "請對比這些數字", "@compareNumbersMatch": { "type": "text", "placeholders": {} @@ -1595,7 +1595,7 @@ "type": "text", "placeholders": {} }, - "wallpaper": "桌布", + "wallpaper": "桌布:", "@wallpaper": { "type": "text", "placeholders": {} From e48ff69ca7361e0d4b139a93f076d3aaa29cf6c9 Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 16 Jul 2024 16:06:41 +0000 Subject: [PATCH 028/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 52.3% (336 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 4a396f398..5d932f4e0 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -5,7 +5,7 @@ "type": "text", "placeholders": {} }, - "accept": "接受", + "accept": "同意", "@accept": { "type": "text", "placeholders": {} From 3e0d103594899f14678a65e4cdf304d85bb68469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E7=81=AB=20Shiranui?= Date: Tue, 16 Jul 2024 16:52:27 +0000 Subject: [PATCH 029/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 1051 +++++++++++++++++++++++++++++++--- 1 file changed, 962 insertions(+), 89 deletions(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 5d932f4e0..45740dd52 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -10,7 +10,7 @@ "type": "text", "placeholders": {} }, - "acceptedTheInvitation": "👍{username}已接受邀請", + "acceptedTheInvitation": "👍 {username} 已接受邀請", "@acceptedTheInvitation": { "type": "text", "placeholders": { @@ -22,7 +22,7 @@ "type": "text", "placeholders": {} }, - "activatedEndToEndEncryption": "🔐{username}已啟用點對點加密", + "activatedEndToEndEncryption": "🔐 {username} 已啟用點對點加密", "@activatedEndToEndEncryption": { "type": "text", "placeholders": { @@ -49,7 +49,7 @@ "type": "text", "placeholders": {} }, - "answeredTheCall": "已開始與{senderName}通話", + "answeredTheCall": "已開始與 {senderName} 通話", "@answeredTheCall": { "type": "text", "placeholders": { @@ -91,14 +91,14 @@ "type": "text", "placeholders": {} }, - "askVerificationRequest": "是否接受來自{username}的驗證申請?", + "askVerificationRequest": "是否接受來自 {username} 的驗證申請?", "@askVerificationRequest": { "type": "text", "placeholders": { "username": {} } }, - "badServerLoginTypesException": "目前伺服器支援的登入類型:\n{serverVersions}\n但本應用程式僅支援:\n{supportedVersions}", + "badServerLoginTypesException": "目前伺服器支援的登入類型:\n {serverVersions} \n但本應用程式僅支援:\n {supportedVersions}", "@badServerLoginTypesException": { "type": "text", "placeholders": { @@ -106,7 +106,7 @@ "supportedVersions": {} } }, - "badServerVersionsException": "目前伺服器支援的Spec版本:\n{serverVersions}\n但本應用程式僅支援{supportedVersions}", + "badServerVersionsException": "目前伺服器支援的Spec版本:\n {serverVersions} \n但本應用程式僅支援 {supportedVersions}", "@badServerVersionsException": { "type": "text", "placeholders": { @@ -114,17 +114,17 @@ "supportedVersions": {} } }, - "banFromChat": "已從聊天室中封禁", + "banFromChat": "已從聊天室中封鎖", "@banFromChat": { "type": "text", "placeholders": {} }, - "banned": "已被封禁", + "banned": "已被封鎖", "@banned": { "type": "text", "placeholders": {} }, - "bannedUser": "{username}封禁了{targetName}", + "bannedUser": "{username} 封鎖了 {targetName}", "@bannedUser": { "type": "text", "placeholders": { @@ -157,14 +157,14 @@ "type": "text", "placeholders": {} }, - "changedTheChatAvatar": "{username}變更了對話頭貼", + "changedTheChatAvatar": "{username} 變更了對話頭貼", "@changedTheChatAvatar": { "type": "text", "placeholders": { "username": {} } }, - "changedTheChatDescriptionTo": "{username}變更了聊天介紹為:「{description}」", + "changedTheChatDescriptionTo": "{username} 變更了聊天室介紹為:「 {description} 」", "@changedTheChatDescriptionTo": { "type": "text", "placeholders": { @@ -172,7 +172,7 @@ "description": {} } }, - "changedTheChatNameTo": "{username}變更了聊天名稱為:「{chatname}」", + "changedTheChatNameTo": "{username} 變更了聊天室名稱為:「 {chatname} 」", "@changedTheChatNameTo": { "type": "text", "placeholders": { @@ -180,14 +180,14 @@ "chatname": {} } }, - "changedTheChatPermissions": "{username}變更了對話權限", + "changedTheChatPermissions": "{username} 變更了對話權限", "@changedTheChatPermissions": { "type": "text", "placeholders": { "username": {} } }, - "changedTheDisplaynameTo": "{username} 變更了顯示名稱為:「{displayname}」", + "changedTheDisplaynameTo": "{username} 變更了顯示名稱為:「 {displayname} 」", "@changedTheDisplaynameTo": { "type": "text", "placeholders": { @@ -195,14 +195,14 @@ "displayname": {} } }, - "changedTheGuestAccessRules": "{username}變更了訪客訪問規則", + "changedTheGuestAccessRules": "{username} 變更了訪客訪問規則", "@changedTheGuestAccessRules": { "type": "text", "placeholders": { "username": {} } }, - "changedTheGuestAccessRulesTo": "{username}變更了訪客訪問規則為:{rules}", + "changedTheGuestAccessRulesTo": "{username} 變更了訪客訪問規則為:{rules}", "@changedTheGuestAccessRulesTo": { "type": "text", "placeholders": { @@ -210,14 +210,14 @@ "rules": {} } }, - "changedTheHistoryVisibility": "{username}變更了歷史記錄觀察狀態", + "changedTheHistoryVisibility": "{username} 變更了歷史記錄觀察狀態", "@changedTheHistoryVisibility": { "type": "text", "placeholders": { "username": {} } }, - "changedTheHistoryVisibilityTo": "{username}變更了歷史紀錄觀察狀態到:{rules}", + "changedTheHistoryVisibilityTo": "{username} 變更了歷史紀錄觀察狀態到:{rules}", "@changedTheHistoryVisibilityTo": { "type": "text", "placeholders": { @@ -225,14 +225,14 @@ "rules": {} } }, - "changedTheJoinRules": "{username}變更了加入的規則", + "changedTheJoinRules": "{username} 變更了加入的規則", "@changedTheJoinRules": { "type": "text", "placeholders": { "username": {} } }, - "changedTheJoinRulesTo": "{username}變更了加入的規則為:{joinRules}", + "changedTheJoinRulesTo": "{username} 變更了加入的規則為:{joinRules}", "@changedTheJoinRulesTo": { "type": "text", "placeholders": { @@ -240,21 +240,21 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username}變更了頭貼", + "changedTheProfileAvatar": "{username} 變更了頭貼", "@changedTheProfileAvatar": { "type": "text", "placeholders": { "username": {} } }, - "changedTheRoomAliases": "{username}變更了聊天室名", + "changedTheRoomAliases": "{username} 變更了聊天室名", "@changedTheRoomAliases": { "type": "text", "placeholders": { "username": {} } }, - "changedTheRoomInvitationLink": "{username}變更了邀請連結", + "changedTheRoomInvitationLink": "{username} 變更了邀請連結", "@changedTheRoomInvitationLink": { "type": "text", "placeholders": { @@ -286,7 +286,7 @@ "type": "text", "placeholders": {} }, - "chat": "聊天", + "chat": "聊天室", "@chat": { "type": "text", "placeholders": {} @@ -296,7 +296,7 @@ "type": "text", "placeholders": {} }, - "chatBackupDescription": "您的過往聊天記錄已被恢復金鑰加密。請您確保不會弄丟它。", + "chatBackupDescription": "您的過往聊天室記錄已被恢復金鑰加密。請您確保不會弄丟它。", "@chatBackupDescription": { "type": "text", "placeholders": {} @@ -383,7 +383,7 @@ "error": {} } }, - "countParticipants": "{count}個參與者", + "countParticipants": "{count} 個參與者", "@countParticipants": { "type": "text", "placeholders": { @@ -395,7 +395,7 @@ "type": "text", "placeholders": {} }, - "createdTheChat": "{username}建立了聊天室", + "createdTheChat": "💬 {username} 建立了聊天室", "@createdTheChat": { "type": "text", "placeholders": { @@ -412,7 +412,7 @@ "type": "text", "placeholders": {} }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", + "dateAndTimeOfDay": "{date} , {timeOfDay}", "@dateAndTimeOfDay": { "type": "text", "placeholders": { @@ -420,7 +420,7 @@ "timeOfDay": {} } }, - "dateWithoutYear": "{month}-{day}", + "dateWithoutYear": "{month} - {day}", "@dateWithoutYear": { "type": "text", "placeholders": { @@ -428,7 +428,7 @@ "day": {} } }, - "dateWithYear": "{year}-{month}-{day}", + "dateWithYear": "{year} - {month} - {day}", "@dateWithYear": { "type": "text", "placeholders": { @@ -577,7 +577,7 @@ "type": "text", "placeholders": {} }, - "endedTheCall": "{senderName}結束了通話", + "endedTheCall": "{senderName} 結束了通話", "@endedTheCall": { "type": "text", "placeholders": { @@ -649,7 +649,7 @@ "type": "text", "placeholders": {} }, - "groupWith": "名稱為{displayname}的群組", + "groupWith": "名稱為 {displayname} 的群組", "@groupWith": { "type": "text", "placeholders": { @@ -666,7 +666,7 @@ "type": "text", "placeholders": {} }, - "hasWithdrawnTheInvitationFor": "{username}收回了對{targetName}的邀請", + "hasWithdrawnTheInvitationFor": "{username} 收回了對 {targetName} 的邀請", "@hasWithdrawnTheInvitationFor": { "type": "text", "placeholders": { @@ -734,7 +734,7 @@ "type": "text", "placeholders": {} }, - "inviteContactToGroup": "邀請聯絡人到{groupName}", + "inviteContactToGroup": "邀請聯絡人到 {groupName}", "@inviteContactToGroup": { "type": "text", "placeholders": { @@ -746,7 +746,7 @@ "type": "text", "placeholders": {} }, - "invitedUser": "{username}邀請了{targetName}", + "invitedUser": "📩 {username} 邀請了 {targetName}", "@invitedUser": { "type": "text", "placeholders": { @@ -764,7 +764,7 @@ "type": "text", "placeholders": {} }, - "inviteText": "{username}邀請您使用FluffyChat\n1. 安裝FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:{link}", + "inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:\n {link}", "@inviteText": { "type": "text", "placeholders": { @@ -777,7 +777,7 @@ "type": "text", "placeholders": {} }, - "joinedTheChat": "{username}加入了聊天室", + "joinedTheChat": "👋 {username} 加入了聊天室", "@joinedTheChat": { "type": "text", "placeholders": { @@ -789,7 +789,7 @@ "type": "text", "placeholders": {} }, - "kicked": "{username}踢了{targetName}", + "kicked": "👞 {username} 踢了 {targetName}", "@kicked": { "type": "text", "placeholders": { @@ -797,7 +797,7 @@ "targetName": {} } }, - "kickedAndBanned": "{username}踢了{targetName}並將其封禁", + "kickedAndBanned": "🙅 {username} 踢了 {targetName} 並將其封鎖", "@kickedAndBanned": { "type": "text", "placeholders": { @@ -837,19 +837,19 @@ "type": "text", "placeholders": {} }, - "loadCountMoreParticipants": "載入{count}個更多的參與者", + "loadCountMoreParticipants": "載入 {count} 個更多的參與者", "@loadCountMoreParticipants": { "type": "text", "placeholders": { "count": {} } }, - "loadingPleaseWait": "載入中… 請稍候。", + "loadingPleaseWait": "載入中...... 請稍候。", "@loadingPleaseWait": { "type": "text", "placeholders": {} }, - "loadMore": "載入更多…", + "loadMore": "載入更多...…", "@loadMore": { "type": "text", "placeholders": {} @@ -859,7 +859,7 @@ "type": "text", "placeholders": {} }, - "logInTo": "登入{homeserver}", + "logInTo": "登入 {homeserver}", "@logInTo": { "type": "text", "placeholders": { @@ -906,7 +906,7 @@ "type": "text", "placeholders": {} }, - "newMessageInFluffyChat": "來自 FluffyChat 的新訊息", + "newMessageInFluffyChat": "💬 來自 FluffyChat 的新訊息", "@newMessageInFluffyChat": { "type": "text", "placeholders": {} @@ -941,7 +941,7 @@ "type": "text", "placeholders": {} }, - "noGoogleServicesWarning": "看起來您手機上沒有Google服務框架。這對於保護您的隱私而言是個好決定!但為了收到FluffyChat的推播通知,我們推薦您使用 https://microg.org/ 或 https://unifiedpush.org/。", + "noGoogleServicesWarning": "看起來您手機上沒有Google服務框架。這對於保護您的隱私而言是個好決定!但為了收到 FluffyChat 的推播通知,我們推薦您使用 https://microg.org/ 或 https://unifiedpush.org/。", "@noGoogleServicesWarning": { "type": "text", "placeholders": {} @@ -961,7 +961,7 @@ "type": "text", "placeholders": {} }, - "noRoomsFound": "找不到聊天室…", + "noRoomsFound": "找不到聊天室...…", "@noRoomsFound": { "type": "text", "placeholders": {} @@ -976,7 +976,7 @@ "type": "text", "placeholders": {} }, - "numUsersTyping": "{count}個人正在輸入…", + "numUsersTyping": "{count} 個人正在輸入...…", "@numUsersTyping": { "type": "text", "placeholders": { @@ -1008,7 +1008,7 @@ "type": "text", "placeholders": {} }, - "oopsSomethingWentWrong": "哎呀!出了一點差錯…", + "oopsSomethingWentWrong": "哎呀!出了一點差錯...…", "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} @@ -1063,7 +1063,7 @@ "type": "text", "placeholders": {} }, - "play": "播放{fileName}", + "play": "播放 {fileName}", "@play": { "type": "text", "placeholders": { @@ -1125,7 +1125,7 @@ "type": "text", "placeholders": {} }, - "redactedAnEvent": "{username}編輯了一個事件", + "redactedAnEvent": "{username} 編輯了一個事件", "@redactedAnEvent": { "type": "text", "placeholders": { @@ -1142,7 +1142,7 @@ "type": "text", "placeholders": {} }, - "rejectedTheInvitation": "{username}拒絕了邀請", + "rejectedTheInvitation": "{username} 拒絕了邀請", "@rejectedTheInvitation": { "type": "text", "placeholders": { @@ -1164,7 +1164,7 @@ "type": "text", "placeholders": {} }, - "removedBy": "被{username}移除", + "removedBy": "被 {username} 移除", "@removedBy": { "type": "text", "placeholders": { @@ -1176,7 +1176,7 @@ "type": "text", "placeholders": {} }, - "unbanFromChat": "解禁聊天", + "unbanFromChat": "解禁聊天室", "@unbanFromChat": { "type": "text", "placeholders": {} @@ -1221,7 +1221,7 @@ "type": "text", "placeholders": {} }, - "seenByUser": "{username}已讀", + "seenByUser": "{username} 已讀", "@seenByUser": { "type": "text", "placeholders": { @@ -1268,21 +1268,21 @@ "type": "text", "placeholders": {} }, - "sentAFile": "{username}傳送了一個文件", + "sentAFile": "{username} 傳送了一個文件", "@sentAFile": { "type": "text", "placeholders": { "username": {} } }, - "sentAnAudio": "{username}傳送了一個音訊", + "sentAnAudio": "{username} 傳送了一個音訊", "@sentAnAudio": { "type": "text", "placeholders": { "username": {} } }, - "sentAPicture": "{username}傳送了一張圖片", + "sentAPicture": "{username} 傳送了一張圖片", "@sentAPicture": { "type": "text", "placeholders": { @@ -1362,7 +1362,7 @@ "type": "text", "placeholders": {} }, - "startedACall": "{senderName}開始了通話", + "startedACall": "{senderName} 開始了通話", "@startedACall": { "type": "text", "placeholders": { @@ -1440,7 +1440,7 @@ "type": "text", "placeholders": {} }, - "unbannedUser": "{username}解除封禁了{targetName}", + "unbannedUser": "{username} 解除封鎖了 {targetName}", "@unbannedUser": { "type": "text", "placeholders": { @@ -1463,7 +1463,7 @@ "type": "text", "placeholders": {} }, - "unknownEvent": "未知事件「{type}」", + "unknownEvent": "未知事件「 {type} 」", "@unknownEvent": { "type": "text", "placeholders": { @@ -1480,14 +1480,14 @@ "type": "text", "placeholders": {} }, - "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} 個未讀聊天室}}", + "unreadChats": "{unreadCount, plural, =1 {1 unread chat} other { {unreadCount} 個未讀聊天室} }", "@unreadChats": { "type": "text", "placeholders": { "unreadCount": {} } }, - "userAndOthersAreTyping": "{username}和其他{count}個人正在輸入…", + "userAndOthersAreTyping": "{username} 和其他 {count} 個人正在輸入...…", "@userAndOthersAreTyping": { "type": "text", "placeholders": { @@ -1495,7 +1495,7 @@ "count": {} } }, - "userAndUserAreTyping": "{username}和{username2}正在輸入…", + "userAndUserAreTyping": "{username} 和 {username2} 正在輸入...…", "@userAndUserAreTyping": { "type": "text", "placeholders": { @@ -1503,14 +1503,14 @@ "username2": {} } }, - "userIsTyping": "{username}正在輸入…", + "userIsTyping": "{username} 正在輸入...…", "@userIsTyping": { "type": "text", "placeholders": { "username": {} } }, - "userLeftTheChat": "{username}離開了聊天室", + "userLeftTheChat": "{username} 離開了聊天室", "@userLeftTheChat": { "type": "text", "placeholders": { @@ -1522,7 +1522,7 @@ "type": "text", "placeholders": {} }, - "userSentUnknownEvent": "{username}傳送了一個{type}事件", + "userSentUnknownEvent": "{username} 傳送了一個 {type} 事件", "@userSentUnknownEvent": { "type": "text", "placeholders": { @@ -1560,7 +1560,7 @@ "type": "text", "placeholders": {} }, - "visibilityOfTheChatHistory": "聊天記錄的可見性", + "visibilityOfTheChatHistory": "聊天室記錄的可見性", "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} @@ -1580,17 +1580,17 @@ "type": "text", "placeholders": {} }, - "waitingPartnerAcceptRequest": "正在等待夥伴接受請求…", + "waitingPartnerAcceptRequest": "正在等待夥伴接受請求...…", "@waitingPartnerAcceptRequest": { "type": "text", "placeholders": {} }, - "waitingPartnerEmoji": "正在等待夥伴接受表情符號…", + "waitingPartnerEmoji": "正在等待夥伴接受表情符號...…", "@waitingPartnerEmoji": { "type": "text", "placeholders": {} }, - "waitingPartnerNumbers": "正在等待夥伴接受數字…", + "waitingPartnerNumbers": "正在等待夥伴接受數字...…", "@waitingPartnerNumbers": { "type": "text", "placeholders": {} @@ -1625,7 +1625,7 @@ "type": "text", "placeholders": {} }, - "wipeChatBackup": "要清除您的聊天記錄備份以建立新的安全金鑰嗎?", + "wipeChatBackup": "要清除您的聊天室記錄備份以建立新的安全金鑰嗎?", "@wipeChatBackup": { "type": "text", "placeholders": {} @@ -1635,7 +1635,7 @@ "type": "text", "placeholders": {} }, - "writeAMessage": "輸入訊息…", + "writeAMessage": "輸入訊息...…", "@writeAMessage": { "type": "text", "placeholders": {} @@ -1655,7 +1655,7 @@ "type": "text", "placeholders": {} }, - "youHaveBeenBannedFromThisChat": "您已經被這個聊天室封禁", + "youHaveBeenBannedFromThisChat": "您已經被這個聊天室封鎖", "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} @@ -1680,7 +1680,7 @@ "type": "text", "placeholders": {} }, - "commandHint_ban": "在此聊天室封禁該使用者", + "commandHint_ban": "在此聊天室封鎖該使用者", "@commandHint_ban": { "type": "text", "description": "Usage hint for the command /ban" @@ -1690,7 +1690,7 @@ "type": "text", "description": "Usage hint for the command /clearcache" }, - "commandHint_create": "建立一個空的群聊\n使用 --no-encryption 選項來禁用加密", + "commandHint_create": "建立一個空的群聊\n使用 --no-encryption 選項來停用加密", "@commandHint_create": { "type": "text", "description": "Usage hint for the command /create" @@ -1700,7 +1700,7 @@ "type": "text", "description": "Usage hint for the command /discardsession" }, - "commandHint_dm": "啟動一對一聊天\n使用 --no-encryption 選項來禁用加密", + "commandHint_dm": "啟動一對一聊天室\n使用 --no-encryption 選項來停用加密", "@commandHint_dm": { "type": "text", "description": "Usage hint for the command /dm" @@ -1751,7 +1751,7 @@ }, "repeatPassword": "再次輸入密碼", "@repeatPassword": {}, - "yourChatBackupHasBeenSetUp": "您的聊天記錄備份已設定。", + "yourChatBackupHasBeenSetUp": "您的聊天室記錄備份已設定。", "@yourChatBackupHasBeenSetUp": {}, "goToTheNewRoom": "前往新聊天室", "@goToTheNewRoom": { @@ -1763,7 +1763,7 @@ "type": "text", "description": "Usage hint for the command /myroomavatar" }, - "commandHint_unban": "在此聊天室解封該使用者", + "commandHint_unban": "在此聊天室解除封鎖該使用者", "@commandHint_unban": { "type": "text", "description": "Usage hint for the command /unban" @@ -1780,11 +1780,11 @@ "type": "text", "placeholders": {} }, - "chatHasBeenAddedToThisSpace": "聊天室已添加到此空間", + "chatHasBeenAddedToThisSpace": "聊天室已新增到此空間", "@chatHasBeenAddedToThisSpace": {}, "clearArchive": "清除存檔", "@clearArchive": {}, - "hugContent": "{senderName}擁抱您", + "hugContent": "{senderName} 擁抱您", "@hugContent": { "type": "text", "placeholders": { @@ -1793,7 +1793,7 @@ }, "commandHint_cuddle": "發送一個摟抱表情", "@commandHint_cuddle": {}, - "supposedMxid": "此處應爲{mxid}", + "supposedMxid": "此處應爲 {mxid}", "@supposedMxid": { "type": "text", "placeholders": { @@ -1802,17 +1802,17 @@ }, "invalidServerName": "伺服器名稱錯誤", "@invalidServerName": {}, - "importFromZipFile": "從 zip 檔案匯入", + "importFromZipFile": "從 .zip 檔案匯入", "@importFromZipFile": {}, "homeserver": "伺服器", "@homeserver": {}, - "exportEmotePack": "將表情包匯出成 zip 檔案", + "exportEmotePack": "將表情包匯出成 .zip 檔案", "@exportEmotePack": {}, "commandInvalid": "命令無效", "@commandInvalid": { "type": "text" }, - "commandMissing": "{command}不是正確的命令。", + "commandMissing": "{command} 不是正確的命令。", "@commandMissing": { "type": "text", "placeholders": { @@ -1820,24 +1820,24 @@ }, "description": "State that {command} is not a valid /command." }, - "googlyEyesContent": "{senderName}向您發送了瞪眼表情", + "googlyEyesContent": "{senderName} 向您發送了瞪眼表情", "@googlyEyesContent": { "type": "text", "placeholders": { "senderName": {} } }, - "addChatDescription": "新增聊天說明...", + "addChatDescription": "新增聊天室描述......", "@addChatDescription": {}, "sendTypingNotifications": "傳送「輸入中」通知", "@sendTypingNotifications": {}, "importEmojis": "匯入表情包", "@importEmojis": {}, - "confirmMatrixId": "如需要刪除你的帳戶,請確認你的Matrix ID。", + "confirmMatrixId": "如需要刪除你的帳戶,請確認你的 Matrix ID。", "@confirmMatrixId": {}, "notAnImage": "不是圖片檔案。", "@notAnImage": {}, - "cuddleContent": "{senderName}摟抱您", + "cuddleContent": "{senderName} 摟抱您", "@cuddleContent": { "type": "text", "placeholders": { @@ -1858,10 +1858,883 @@ "@blockedUsers": {}, "block": "封鎖", "@block": {}, - "discover": "探索", + "discover": "發現", "@discover": {}, "alwaysUse24HourFormat": "否", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." + }, + "sender": "發送者", + "@sender": {}, + "voiceCall": "語音通話", + "@voiceCall": {}, + "blockUsername": "忽略使用者名稱", + "@blockUsername": {}, + "noBackupWarning": "警告!如果不啟用聊天室備份,您將失去對加密訊息的訪問。強烈建議在登出前先啟用聊天室備份。", + "@noBackupWarning": {}, + "addChatOrSubSpace": "新增聊天室或子空間", + "@addChatOrSubSpace": {}, + "thisDevice": "這個設備:", + "@thisDevice": {}, + "separateChatTypes": "分開私訊和群組", + "@separateChatTypes": { + "type": "text", + "placeholders": {} + }, + "commandHint_markasdm": "將給定的 Matrix ID 標記為直接訊息房間", + "@commandHint_markasdm": {}, + "commandHint_html": "發送 HTML 格式的文字", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_send": "發送文字", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "emoteKeyboardNoRecents": "最近使用的表情將顯示在這裡...", + "@emoteKeyboardNoRecents": { + "type": "text", + "placeholders": {} + }, + "noChatDescriptionYet": "尚未建立聊天室描述。", + "@noChatDescriptionYet": {}, + "optionalRedactReason": "(非必填)收回此訊息的原因...", + "@optionalRedactReason": {}, + "dehydrateWarning": "此操作不能反悔。請確保安全地存儲備份文件。", + "@dehydrateWarning": {}, + "hydrateTorLong": "上次在 TOR 上匯出會話了嗎?快速匯入它並繼續聊天室。", + "@hydrateTorLong": {}, + "hydrate": "從備份文件恢復", + "@hydrate": {}, + "locationDisabledNotice": "位置服務被停用。請啟用它們以能夠分享您的位置。", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} 不是 Matrix 服務器,改用 {server2} 嗎?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "addToBundle": "新增到套組", + "@addToBundle": {}, + "bundleName": "套組名稱", + "@bundleName": {}, + "pleaseEnterYourPin": "請輸入您的密碼", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "redactedByBecause": "由 {username} 編輯,原因:\"{reason}\"", + "@redactedByBecause": { + "type": "text", + "placeholders": { + "username": {}, + "reason": {} + } + }, + "saveFile": "儲存檔案", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "publish": "發布", + "@publish": {}, + "hasKnocked": "🚪 {user} 敲門了", + "@hasKnocked": { + "placeholders": { + "user": {} + } + }, + "unlockOldMessages": "解鎖舊消息", + "@unlockOldMessages": {}, + "callingAccountDetails": "允許 FluffyChat 使用原生 Android 撥號應用程式。", + "@callingAccountDetails": {}, + "noOtherDevicesFound": "未找到其他設備", + "@noOtherDevicesFound": {}, + "noUsersFoundWithQuery": "很遺憾,找不到與「 {query} 」相符的使用者。請檢查是否有打錯字。", + "@noUsersFoundWithQuery": { + "type": "text", + "placeholders": { + "query": {} + } + }, + "publicLink": "公開網址", + "@publicLink": {}, + "dehydrate": "匯出會話並清除裝置", + "@dehydrate": {}, + "dehydrateTor": "TOR 使用者:匯出會話", + "@dehydrateTor": {}, + "reopenChat": "重新開啟聊天室", + "@reopenChat": {}, + "widgetNameError": "請提供一個顯示名稱。", + "@widgetNameError": {}, + "yourGlobalUserIdIs": "您的全域使用者ID是: ", + "@yourGlobalUserIdIs": {}, + "startFirstChat": "開始您的第一次聊天室", + "@startFirstChat": {}, + "experimentalVideoCalls": "實驗性視訊通話", + "@experimentalVideoCalls": {}, + "youAcceptedTheInvitation": "👍 您接受了邀請", + "@youAcceptedTheInvitation": {}, + "storeSecurlyOnThisDevice": "在此設備上安全存儲", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} 個文件", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "screenSharingDetail": "您正在 FuffyChat 中分享您的螢幕", + "@screenSharingDetail": {}, + "wrongPinEntered": "輸入的密碼錯誤! {seconds} 秒後再試一次......", + "@wrongPinEntered": { + "type": "text", + "placeholders": { + "seconds": {} + } + }, + "archiveRoomDescription": "聊天室將被移動到存檔中。其他使用者將能看到您已離開聊天室。", + "@archiveRoomDescription": {}, + "banUserDescription": "該使用者將被禁止進入聊天室,直到他們被解禁之前都無法再次進入聊天室。", + "@banUserDescription": {}, + "searchChatsRooms": "搜尋 #chats, @users...", + "@searchChatsRooms": {}, + "decline": "拒絕", + "@decline": {}, + "sendReadReceipts": "發送已讀回條", + "@sendReadReceipts": {}, + "formattedMessagesDescription": "使用 markdown 顯示豐富的訊息內容,如粗體文字。", + "@formattedMessagesDescription": {}, + "verifyOtherDevice": "🔐 驗證其他裝置", + "@verifyOtherDevice": {}, + "youInvitedUser": "📩 您邀請了 {user}", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "pinMessage": "釘選到房間", + "@pinMessage": {}, + "youKicked": "👞 您踢出了 {user}", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "users": "使用者", + "@users": {}, + "pleaseChoose": "請選擇", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "youRejectedTheInvitation": "您拒絕了邀請", + "@youRejectedTheInvitation": {}, + "enterRoom": "進入房間", + "@enterRoom": {}, + "allSpaces": "所有空間", + "@allSpaces": {}, + "indexedDbErrorLong": "預設情況下,私密模式不啟用消息存儲。\n請訪問\n - about:config\n - 將 dom.indexedDB.privateBrowsing.enabled 設置為 true\n否則,無法運行 FluffyChat。", + "@indexedDbErrorLong": {}, + "youKickedAndBanned": "🙅 您踢出並封鎖了 {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "user": "使用者", + "@user": {}, + "custom": "自訂", + "@custom": {}, + "hidePresences": "隱藏狀態列表?", + "@hidePresences": {}, + "signInWithPassword": "使用密碼登入", + "@signInWithPassword": {}, + "setColorTheme": "設定顏色主題:", + "@setColorTheme": {}, + "makeAdminDescription": "一旦您讓這個使用者成為管理員,您可能無法撤銷此操作,因為他們將擁有與您相同的權限。", + "@makeAdminDescription": {}, + "createGroupAndInviteUsers": "建立群組並邀請使用者", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "可以透過搜尋找到群組", + "@groupCanBeFoundViaSearch": {}, + "pleaseEnterYourCurrentPassword": "請輸入您當前的密碼", + "@pleaseEnterYourCurrentPassword": {}, + "widgetCustom": "自訂", + "@widgetCustom": {}, + "createGroup": "建立群組", + "@createGroup": {}, + "enterSpace": "進入空間", + "@enterSpace": {}, + "shareLocation": "分享位置", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "widgetVideo": "影片", + "@widgetVideo": {}, + "redactMessageDescription": "該訊息將對此對話中的所有參與者收回。這不能被反悔。", + "@redactMessageDescription": {}, + "removeFromBundle": "從此套組中移除", + "@removeFromBundle": {}, + "widgetName": "名稱", + "@widgetName": {}, + "jump": "跳轉", + "@jump": {}, + "commandHint_unignore": "取消忽略已提供的 Matrix ID", + "@commandHint_unignore": {}, + "commandHint_markasgroup": "標記為群組", + "@commandHint_markasgroup": {}, + "commandHint_me": "描述自己", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_plain": "發送未格式化的文字", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "以反應的形式發送回覆", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "createNewSpace": "新建空間", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "allRooms": "所有群組聊天室", + "@allRooms": { + "type": "text", + "placeholders": {} + }, + "chatPermissions": "聊天室權限", + "@chatPermissions": {}, + "customEmojisAndStickersBody": "新增或分享可在任何聊天室中使用的自訂表情符號或貼圖。", + "@customEmojisAndStickersBody": {}, + "errorObtainingLocation": "取得位置錯誤:{error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "hideRedactedMessages": "隱藏被刪除的訊息", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "隱藏無效或未知的訊息格式", + "@hideInvalidOrUnknownMessageFormats": {}, + "dehydrateTorLong": "對 TOR 使用者,建議在關閉窗口前匯出會話。", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR 使用者:匯入會話匯出", + "@hydrateTor": {}, + "messagesStyle": "訊息樣式:", + "@messagesStyle": {}, + "shareInviteLink": "分享邀請網址", + "@shareInviteLink": {}, + "scanQrCode": "掃描 QR 碼", + "@scanQrCode": {}, + "openVideoCamera": "打開錄影", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "您的一個客戶端已登出", + "@oneClientLoggedOut": {}, + "addAccount": "新增帳號", + "@addAccount": {}, + "editBundlesForAccount": "為此帳號編輯套組", + "@editBundlesForAccount": {}, + "openInMaps": "在地圖中打開", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "serverRequiresEmail": "該伺服器需要驗證您的註冊電子郵件地址。", + "@serverRequiresEmail": {}, + "or": "或", + "@or": { + "type": "text", + "placeholders": {} + }, + "hideMemberChangesInPublicChatsBody": "若有人加入或離開公開聊天室,將不在聊天室時間軸顯示,以提升資訊可讀性。", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "概觀", + "@overview": {}, + "notifyMeFor": "通知我", + "@notifyMeFor": {}, + "passwordRecoverySettings": "恢復密碼設定", + "@passwordRecoverySettings": {}, + "redactedBy": "由 {username} 編輯", + "@redactedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "recoveryKey": "恢復金鑰", + "@recoveryKey": {}, + "spaceName": "空間名稱", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "正在同步... 請稍候。", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "messageInfo": "訊息資訊", + "@messageInfo": {}, + "removeFromSpace": "從空間中移除", + "@removeFromSpace": {}, + "addToSpaceDescription": "選擇一個空間將此聊天室加入。", + "@addToSpaceDescription": {}, + "pleaseEnterRecoveryKeyDescription": "要解鎖您的舊訊息,請輸入在之前的會話中生成的恢復密鑰。您的恢復密鑰不是您的密碼。", + "@pleaseEnterRecoveryKeyDescription": {}, + "videoWithSize": "影片({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "emojis": "表情符號", + "@emojis": {}, + "placeCall": "發起通話", + "@placeCall": {}, + "unsupportedAndroidVersion": "不支持的Android版本", + "@unsupportedAndroidVersion": {}, + "videoCallsBetaWarning": "請注意,視訊通話目前處於測試階段。它們可能不會按預期工作,或者在所有平台上都不工作。", + "@videoCallsBetaWarning": {}, + "widgetUrlError": "這不是一個有效的URL。", + "@widgetUrlError": {}, + "nextAccount": "下一個帳戶", + "@nextAccount": {}, + "previousAccount": "上一個帳戶", + "@previousAccount": {}, + "addWidget": "新增小工具", + "@addWidget": {}, + "errorAddingWidget": "新增小工具時發生錯誤。", + "@errorAddingWidget": {}, + "youJoinedTheChat": "您加入了聊天室", + "@youJoinedTheChat": {}, + "youBannedUser": "您封鎖了 {user}", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "youHaveWithdrawnTheInvitationFor": "您已收回對 {user} 的邀請", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "youInvitedBy": "📩 您被 {user} 邀請", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "youUnbannedUser": "您解除封鎖了 {user}", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "youInvitedToBy": "📩 您通過網址被邀請至:\n {alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": {} + } + }, + "callingPermissions": "通話權限", + "@callingPermissions": {}, + "callingAccount": "通話帳戶", + "@callingAccount": {}, + "appearOnTop": "顯示在最上層", + "@appearOnTop": {}, + "newGroup": "新群組", + "@newGroup": {}, + "newSpace": "新空間", + "@newSpace": {}, + "numChats": "{number} 個聊天室", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "hideUnimportantStateEvents": "隱藏不重要的狀態事件", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "不再顯示", + "@doNotShowAgain": {}, + "encryptThisChat": "加密此聊天室", + "@encryptThisChat": {}, + "sorryThatsNotPossible": "抱歉......這是不可能的", + "@sorryThatsNotPossible": {}, + "profileNotFound": "在伺服器上找不到該使用者。可能是連接問題或該使用者不存在。", + "@profileNotFound": {}, + "invite": "邀請", + "@invite": {}, + "invitePrivateChat": "📨 邀請私人聊天室", + "@invitePrivateChat": {}, + "removeDevicesDescription": "您將從這個設備登出,並將不再能夠接收消息。", + "@removeDevicesDescription": {}, + "unbanUserDescription": "如果該使用者嘗試,他們將能夠再次進入聊天室。", + "@unbanUserDescription": {}, + "kickUserDescription": "該使用者被踢出聊天室,但未被禁止。在公開聊天室中,該使用者可以隨時重新加入。", + "@kickUserDescription": {}, + "pushNotificationsNotAvailable": "推送通知不可用", + "@pushNotificationsNotAvailable": {}, + "learnMore": "了解更多", + "@learnMore": {}, + "nothingFound": "什麼都沒找到......", + "@nothingFound": {}, + "startConversation": "開始對話", + "@startConversation": {}, + "databaseMigrationBody": "請稍候。這可能需要一點時間。", + "@databaseMigrationBody": {}, + "pleaseChooseAStrongPassword": "請選擇一個強密碼", + "@pleaseChooseAStrongPassword": {}, + "passwordIsWrong": "您輸入的密碼錯誤", + "@passwordIsWrong": {}, + "publicChatAddresses": "公開聊天室地址", + "@publicChatAddresses": {}, + "userRole": "使用者角色", + "@userRole": {}, + "minimumPowerLevel": "{level} 是最低權限等級。", + "@minimumPowerLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "leaveEmptyToClearStatus": "留空以清除您的狀態。", + "@leaveEmptyToClearStatus": {}, + "select": "選擇", + "@select": {}, + "files": "文件", + "@files": {}, + "forwardMessageTo": "將訊息轉發至 {roomName} ?", + "@forwardMessageTo": { + "type": "text", + "placeholders": { + "roomName": {} + } + }, + "sendTypingNotificationsDescription": "聊天室中的其他參與者可以看到您正在輸入新訊息。", + "@sendTypingNotificationsDescription": {}, + "verifyOtherDeviceDescription": "當您驗證另一個裝置時,這些裝置可以交換密鑰,提升您的整體安全性。💪 當您開始驗證時,一個彈出視窗將在兩個裝置上的應用程式中出現。在那裡,您將看到一系列的表情符號或數字,您需要相互比較。在開始驗證之前最好有兩個裝置在手邊。🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} 接受了密鑰驗證", + "@acceptedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "completedKeyVerification": "{sender} 完成了密鑰驗證", + "@completedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "isReadyForKeyVerification": "{sender} 已準備好進行密鑰驗證", + "@isReadyForKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "thereAreCountUsersBlocked": "目前有 {count} 名使用者被封鎖。", + "@thereAreCountUsersBlocked": { + "type": "text", + "count": {} + }, + "knockRestricted": "敲門受限", + "@knockRestricted": {}, + "appLockDescription": "未使用時以密碼鎖定應用程式", + "@appLockDescription": {}, + "globalChatId": "全球聊天室 ID", + "@globalChatId": {}, + "accessAndVisibility": "訪問權限和可見性", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "誰被允許加入此聊天室以及如何發現聊天室。", + "@accessAndVisibilityDescription": {}, + "calls": "通話", + "@calls": {}, + "chatDescription": "聊天室描述", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "聊天室描述已變更", + "@chatDescriptionHasBeenChanged": {}, + "tryAgain": "再試一次", + "@tryAgain": {}, + "pleaseEnterRecoveryKey": "請輸入您的恢復金鑰:", + "@pleaseEnterRecoveryKey": {}, + "directChat": "私訊", + "@directChat": {}, + "register": "註冊", + "@register": { + "type": "text", + "placeholders": {} + }, + "setAsCanonicalAlias": "設為主要別名", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setChatDescription": "設定聊天室描述", + "@setChatDescription": {}, + "groupName": "群組名稱", + "@groupName": {}, + "searchForUsers": "搜尋 @users...", + "@searchForUsers": {}, + "inviteGroupChat": "📨 邀請群組聊天室", + "@inviteGroupChat": {}, + "setTheme": "設定主題:", + "@setTheme": {}, + "knocking": "敲門", + "@knocking": {}, + "sessionLostBody": "您的會話已丟失。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "@sessionLostBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "swipeRightToLeftToReply": "向右滑至左以回覆", + "@swipeRightToLeftToReply": {}, + "hideRedactedMessagesBody": "如果有人收回一條訊息,該訊息將不再在聊天室中顯示。", + "@hideRedactedMessagesBody": {}, + "link": "網址", + "@link": {}, + "obtainingLocation": "正在取得位置…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "哎呀!設定推送通知時不幸發生錯誤。", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "移除您的頭像", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "單一登入", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "presenceStyle": "目前狀態:", + "@presenceStyle": { + "type": "text", + "placeholders": {} + }, + "presencesToggle": "顯示其他使用者的狀態訊息", + "@presencesToggle": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "空間是公開的", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "dismiss": "解散", + "@dismiss": {}, + "reactedWith": "{sender} 以 {reaction} 回應", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "confirmEventUnpin": "您確定要永久取消釘選該事件嗎?", + "@confirmEventUnpin": {}, + "switchToAccount": "切換到帳戶 {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "widgetEtherpad": "文字筆記", + "@widgetEtherpad": {}, + "noOneCanJoin": "沒有人可以加入", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} 想要加入聊天室。", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": {} + } + }, + "noPublicLinkHasBeenCreatedYet": "尚未建立公開網址", + "@noPublicLinkHasBeenCreatedYet": {}, + "saveKeyManuallyDescription": "通過觸發系統分享對話框或剪貼板手動保存此密鑰。", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "存儲在 Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "存儲在 Apple KeyChain", + "@storeInAppleKeyChain": {}, + "foregroundServiceRunning": "當前景服務正在運行時會顯示此通知。", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "螢幕分享", + "@screenSharingTitle": {}, + "wasDirectChatDisplayName": "空的聊天室(原名稱為 {oldDisplayName} )", + "@wasDirectChatDisplayName": { + "type": "text", + "placeholders": { + "oldDisplayName": {} + } + }, + "otherCallingPermissions": "麥克風、相機和其他 FluffyChat 權限", + "@otherCallingPermissions": {}, + "disableEncryptionWarning": "出於安全原因,您不能在之前已啟用加密的聊天室中停用加密。", + "@disableEncryptionWarning": {}, + "deviceKeys": "設備密鑰:", + "@deviceKeys": {}, + "fileIsTooBigForServer": "伺服器報告該文件太大,無法發送。", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "文件已保存在 {path}", + "@fileHasBeenSavedAt": { + "type": "text", + "placeholders": { + "path": {} + } + }, + "jumpToLastReadMessage": "跳至最後讀取的訊息", + "@jumpToLastReadMessage": {}, + "openLinkInBrowser": "在瀏覽器中開啟連結", + "@openLinkInBrowser": {}, + "reportErrorDescription": "😭 哦不。出了些問題。如果您願意,可以將此錯誤報告給開發者。", + "@reportErrorDescription": {}, + "readUpToHere": "讀到這裡", + "@readUpToHere": {}, + "report": "報告", + "@report": {}, + "pleaseEnterANumber": "請輸入大於 0 的數字", + "@pleaseEnterANumber": {}, + "roomUpgradeDescription": "然後,聊天室將使用新的房間版本重新建立。所有參與者將被通知他們需要切換到新的聊天室。您可以在 https://spec.matrix.org/latest/rooms/ 了解更多關於房間版本的信息。", + "@roomUpgradeDescription": {}, + "wrongRecoveryKey": "抱歉......這似乎不是正確的恢復密鑰。", + "@wrongRecoveryKey": {}, + "passwordsDoNotMatch": "密碼不匹配", + "@passwordsDoNotMatch": {}, + "publicSpaces": "公共空間", + "@publicSpaces": {}, + "subspace": "子空間", + "@subspace": {}, + "initAppError": "初始化應用時發生錯誤", + "@initAppError": {}, + "canceledKeyVerification": "{sender} 取消了密鑰驗證", + "@canceledKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "startedKeyVerification": "{sender} 開始了密鑰驗證", + "@startedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "transparent": "透明", + "@transparent": {}, + "incomingMessages": "收到的訊息", + "@incomingMessages": {}, + "databaseMigrationTitle": "資料庫已最佳化", + "@databaseMigrationTitle": {}, + "restoreSessionBody": "應用程式現在嘗試從備份中恢復您的會話。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "@restoreSessionBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "stickers": "貼圖", + "@stickers": {}, + "joinSpace": "加入空間", + "@joinSpace": {}, + "noMoreChatsFound": "沒有更多聊天室了...", + "@noMoreChatsFound": {}, + "commandHint_op": "設定給定使用者的權限等級(預設:50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "customEmojisAndStickers": "自訂表情符號和貼圖", + "@customEmojisAndStickers": {}, + "locationPermissionDeniedNotice": "位置權限被拒絕。請授予它們以能夠分享您的位置。", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "您想邀請 {contact} 加入 \"{groupName}\" 聊天室嗎?", + "@inviteContactToGroupQuestion": {}, + "enableMultiAccounts": "(實驗性功能)在此裝置上啟用多個帳號", + "@enableMultiAccounts": {}, + "hideMemberChangesInPublicChats": "在公開聊天室中隱藏成員變動", + "@hideMemberChangesInPublicChats": {}, + "recoveryKeyLost": "遺失恢復金鑰?", + "@recoveryKeyLost": {}, + "sendAsText": "以文字發送", + "@sendAsText": { + "type": "text" + }, + "sendSticker": "發送貼圖", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "unverified": "尚未驗證", + "@unverified": {}, + "time": "時間", + "@time": {}, + "chatCanBeDiscoveredViaSearchOnServer": "可以透過在 {server} 上的搜尋發現聊天室", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "text", + "placeholders": { + "server": {} + } + }, + "commandHint_sendraw": "發送原始 json", + "@commandHint_sendraw": {}, + "newPassword": "新密碼", + "@newPassword": {}, + "createNewAddress": "建立新地址", + "@createNewAddress": {}, + "searchIn": "在聊天室「 {chat} 」中搜尋......", + "@searchIn": { + "type": "text", + "placeholders": { + "chat": {} + } + }, + "searchMore": "搜尋更多......", + "@searchMore": {}, + "gallery": "畫廊", + "@gallery": {}, + "databaseBuildErrorBody": "無法建立 SQLite 資料庫。應用程式目前嘗試使用遺留資料庫。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "@databaseBuildErrorBody": { + "type": "text", + "placeholders": { + "url": {}, + "error": {} + } + }, + "sendReadReceiptsDescription": "聊天室中的其他參與者可以看到您已讀取一條訊息。", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "格式化訊息", + "@formattedMessages": {}, + "restricted": "受限", + "@restricted": {}, + "goToSpace": "前往空間:{space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "標記為未讀", + "@markAsUnread": {}, + "noDatabaseEncryption": "此平台不支援資料庫加密", + "@noDatabaseEncryption": {}, + "messageType": "訊息類型", + "@messageType": {}, + "openGallery": "開啟畫廊", + "@openGallery": {}, + "markAsRead": "標記為已讀", + "@markAsRead": {}, + "reportUser": "舉報使用者", + "@reportUser": {}, + "unsupportedAndroidVersionLong": "此功能需要較新的Android版本。請檢查更新或Lineage OS支持。", + "@unsupportedAndroidVersionLong": {}, + "emailOrUsername": "電子郵件或使用者名", + "@emailOrUsername": {}, + "indexedDbErrorTitle": "私密模式問題", + "@indexedDbErrorTitle": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "usersMustKnock": "使用者必須敲門", + "@usersMustKnock": {}, + "knock": "敲門", + "@knock": {}, + "storeInSecureStorageDescription": "將恢復密鑰存儲在此設備的安全存儲中。", + "@storeInSecureStorageDescription": {}, + "appearOnTopDetails": "允許應用程式顯示在最上層(如果您已將 Fluffychat 設定為通話帳戶則不需要)", + "@appearOnTopDetails": {}, + "whyIsThisMessageEncrypted": "為什麼這條訊息無法讀取?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "如果訊息是在您登入此設備之前發送的,就可能會發生這種情況。\n\n也有可能是發送者已經封鎖了您的設備,或者網絡連接出了問題。\n\n如果您能在另一個會話中讀取該訊息,那麼您可以從中轉移訊息!前往設定 > 設備,並確保您的設備已相互驗證。當您下次打開房間且兩個會話都在前景時,密鑰將自動傳輸。\n\n不想在登出或切換設備時丟失密鑰?請確保您已在設定中啟用了聊天室備份。", + "@noKeyForThisMessage": {}, + "newSpaceDescription": "空間允許您整合您的聊天室並建立私人或公開社群。", + "@newSpaceDescription": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "請稍後再試,或選擇不同的伺服器。", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "使用 {provider} 登入", + "@signInWith": { + "type": "text", + "placeholders": { + "provider": {} + } + }, + "invalidInput": "無效的輸入!", + "@invalidInput": {}, + "verifyOtherUser": "🔐 驗證其他使用者", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "如果您驗證了另一個使用者,您可以確定您真正與誰通信。💪\n\n當您開始驗證時,您和另一個使用者將在應用程式中看到一個彈出視窗。在那裡,您將看到一系列的表情符號或數字,您需要相互比較。\n\n最好的方式是見面或開始視訊通話。👭", + "@verifyOtherUserDescription": {}, + "requestedKeyVerification": "{sender} 請求了密鑰驗證", + "@requestedKeyVerification": { + "type": "text", + "placeholders": { + "sender": {} + } + }, + "commandHint_ignore": "忽略已提供的 Matrix ID", + "@commandHint_ignore": {}, + "countChatsAndCountParticipants": "{chats} 個聊天室和 {participants} 位參與者", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "joinedChats": "已加入的聊天室", + "@joinedChats": {}, + "unread": "未讀", + "@unread": {}, + "space": "空間", + "@space": {}, + "spaces": "空間", + "@spaces": {}, + "start": "開始", + "@start": {}, + "openChat": "開啟聊天室", + "@openChat": {}, + "unreadChatsInApp": "{appname}:{unread} 未讀聊天室", + "@unreadChatsInApp": { + "type": "text", + "placeholders": { + "appname": {}, + "unread": {} + } } } From 87d3d0feed614c69e63856de6d0c4aef05a7b8b2 Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 17 Jul 2024 08:59:08 +0200 Subject: [PATCH 030/106] chore: Follow up list item click behavior --- lib/pages/chat_list/chat_list_item.dart | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index f704c41bf..40ca6631a 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -173,16 +173,19 @@ class ChatListItem extends StatelessWidget { Positioned( top: 0, right: 0, - child: AnimatedScale( - duration: FluffyThemes.animationDuration, - curve: FluffyThemes.animationCurve, - scale: listTileHovered ? 1.0 : 0.0, - child: Material( - color: backgroundColor, - borderRadius: BorderRadius.circular(16), - child: const Icon( - Icons.arrow_drop_down_circle_outlined, - size: 18, + child: GestureDetector( + onTap: () => onLongPress?.call(context), + child: AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: listTileHovered ? 1.0 : 0.0, + child: Material( + color: backgroundColor, + borderRadius: BorderRadius.circular(16), + child: const Icon( + Icons.arrow_drop_down_circle_outlined, + size: 18, + ), ), ), ), From 86b1314c61f12f0ce102d98df7941d927de2653d Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 17 Jul 2024 10:27:56 +0200 Subject: [PATCH 031/106] refactor: Use cached network image for mxc image uris --- lib/pages/chat/events/html_message.dart | 1 - lib/widgets/avatar.dart | 16 ++-- lib/widgets/mxc_image.dart | 108 ++++++++---------------- pubspec.lock | 32 +++++++ pubspec.yaml | 1 + 5 files changed, 75 insertions(+), 83 deletions(-) diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index d6e6cbc44..4d5bcdc8c 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -280,7 +280,6 @@ class ImageExtension extends HtmlExtension { uri: mxcUrl, width: width ?? height ?? defaultDimension, height: height ?? width ?? defaultDimension, - cacheKey: mxcUrl.toString(), ), ), ); diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 0c280a88b..cdb7b2e7a 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -47,29 +47,32 @@ class Avatar extends StatelessWidget { final noPic = mxContent == null || mxContent.toString().isEmpty || mxContent.toString() == 'null'; - final textWidget = Center( + final textWidget = Container( + color: name?.lightColorAvatar, + alignment: Alignment.center, child: Text( fallbackLetters, style: TextStyle( - color: noPic ? Colors.white : null, + color: Colors.white, fontSize: (size / 2.5).roundToDouble(), ), ), ); final borderRadius = this.borderRadius ?? BorderRadius.circular(size / 2); final presenceUserId = this.presenceUserId; - final color = - noPic ? name?.lightColorAvatar : Theme.of(context).secondaryHeaderColor; final container = Stack( children: [ SizedBox( width: size, height: size, child: Material( - color: color, shape: RoundedRectangleBorder( borderRadius: borderRadius, - side: border ?? BorderSide.none, + side: border ?? + BorderSide( + color: Theme.of(context).dividerColor, + width: 1, + ), ), clipBehavior: Clip.hardEdge, child: noPic @@ -81,7 +84,6 @@ class Avatar extends StatelessWidget { width: size, height: size, placeholder: (_) => textWidget, - cacheKey: mxContent.toString(), ), ), ), diff --git a/lib/widgets/mxc_image.dart b/lib/widgets/mxc_image.dart index 9290156bf..b12c9fc99 100644 --- a/lib/widgets/mxc_image.dart +++ b/lib/widgets/mxc_image.dart @@ -2,7 +2,7 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'package:http/http.dart' as http; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; @@ -18,11 +18,8 @@ class MxcImage extends StatefulWidget { final bool isThumbnail; final bool animated; final Duration retryDuration; - final Duration animationDuration; - final Curve animationCurve; final ThumbnailMethod thumbnailMethod; final Widget Function(BuildContext context)? placeholder; - final String? cacheKey; const MxcImage({ this.uri, @@ -33,11 +30,8 @@ class MxcImage extends StatefulWidget { this.placeholder, this.isThumbnail = true, this.animated = false, - this.animationDuration = FluffyThemes.animationDuration, this.retryDuration = const Duration(seconds: 2), - this.animationCurve = FluffyThemes.animationCurve, this.thumbnailMethod = ThumbnailMethod.scale, - this.cacheKey, super.key, }); @@ -46,76 +40,11 @@ class MxcImage extends StatefulWidget { } class _MxcImageState extends State { - static final Map _imageDataCache = {}; - Uint8List? _imageDataNoCache; - Uint8List? get _imageData { - final cacheKey = widget.cacheKey; - return cacheKey == null ? _imageDataNoCache : _imageDataCache[cacheKey]; - } - - set _imageData(Uint8List? data) { - if (data == null) return; - final cacheKey = widget.cacheKey; - cacheKey == null - ? _imageDataNoCache = data - : _imageDataCache[cacheKey] = data; - } - - bool? _isCached; + Uint8List? _imageData; Future _load() async { - final client = Matrix.of(context).client; - final uri = widget.uri; final event = widget.event; - if (uri != null) { - final devicePixelRatio = MediaQuery.of(context).devicePixelRatio; - final width = widget.width; - final realWidth = width == null ? null : width * devicePixelRatio; - final height = widget.height; - final realHeight = height == null ? null : height * devicePixelRatio; - - final httpUri = widget.isThumbnail - ? uri.getThumbnail( - client, - width: realWidth, - height: realHeight, - animated: widget.animated, - method: widget.thumbnailMethod, - ) - : uri.getDownloadLink(client); - - final storeKey = widget.isThumbnail ? httpUri : uri; - - if (_isCached == null) { - final cachedData = await client.database?.getFile(storeKey); - if (cachedData != null) { - if (!mounted) return; - setState(() { - _imageData = cachedData; - _isCached = true; - }); - return; - } - _isCached = false; - } - - final response = await http.get(httpUri); - if (response.statusCode != 200) { - if (response.statusCode == 404) { - return; - } - throw Exception(); - } - final remoteData = response.bodyBytes; - - if (!mounted) return; - setState(() { - _imageData = remoteData; - }); - await client.database?.storeFile(storeKey, remoteData, 0); - } - if (event != null) { final data = await event.downloadAndDecryptAttachment( getThumbnail: widget.isThumbnail, @@ -131,7 +60,7 @@ class _MxcImageState extends State { } void _tryLoad(_) async { - if (_imageData != null) { + if (_imageData != null || widget.event == null) { return; } try { @@ -160,6 +89,36 @@ class _MxcImageState extends State { @override Widget build(BuildContext context) { + final uri = widget.uri; + + if (uri != null) { + final client = Matrix.of(context).client; + final devicePixelRatio = MediaQuery.of(context).devicePixelRatio; + final width = widget.width; + final realWidth = width == null ? null : width * devicePixelRatio; + final height = widget.height; + final realHeight = height == null ? null : height * devicePixelRatio; + + final httpUri = widget.isThumbnail + ? uri.getThumbnail( + client, + width: realWidth, + height: realHeight, + animated: widget.animated, + method: widget.thumbnailMethod, + ) + : uri.getDownloadLink(client); + + return CachedNetworkImage( + imageUrl: httpUri.toString(), + width: width, + height: height, + fit: widget.fit, + placeholder: (context, _) => placeholder(context), + errorWidget: (context, _, __) => placeholder(context), + ); + } + final data = _imageData; final hasData = data != null && data.isNotEmpty; @@ -177,7 +136,6 @@ class _MxcImageState extends State { filterQuality: widget.isThumbnail ? FilterQuality.low : FilterQuality.medium, errorBuilder: (context, __, ___) { - _isCached = false; _imageData = null; WidgetsBinding.instance.addPostFrameCallback(_tryLoad); return placeholder(context); diff --git a/pubspec.lock b/pubspec.lock index 0ff035c1b..18e927b9f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -129,6 +129,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + url: "https://pub.dev" + source: hosted + version: "3.3.1" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" + url: "https://pub.dev" + source: hosted + version: "1.2.0" callkeep: dependency: "direct main" description: @@ -1270,6 +1294,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + octo_image: + dependency: transitive + description: + name: octo_image + sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" + url: "https://pub.dev" + source: hosted + version: "2.0.0" olm: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 36a37e8c4..4d9d028d2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: async: ^2.11.0 badges: ^3.1.2 blurhash_dart: ^1.2.1 + cached_network_image: ^3.3.1 callkeep: ^0.3.2 chewie: ^1.8.1 collection: ^1.18.0 From 998868dd566b3b479566963417748c6c2db1a332 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Wed, 17 Jul 2024 18:00:26 +0200 Subject: [PATCH 032/106] build: Try out flutter 3.22.2 in --- snap/snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index a32ad5704..046b1ad66 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -66,7 +66,7 @@ parts: flutter-git: source: https://github.com/flutter/flutter.git - source-tag: 3.19.6 + source-tag: 3.22.2 source-depth: 1 plugin: nil override-build: | From 69fcb01988a58f030a1e5df5ded3c5f7fe93cab2 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 18 Jul 2024 07:33:55 +0200 Subject: [PATCH 033/106] build: Fix build snap --- pubspec.lock | 6 +++--- pubspec.yaml | 1 + snap/snapcraft.yaml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 18e927b9f..afec622d5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -2396,13 +2396,13 @@ packages: source: hosted version: "1.2.0" win32: - dependency: transitive + dependency: "direct overridden" description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.5.0" win32_registry: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 4d9d028d2..d89ef7d80 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -161,3 +161,4 @@ dependency_overrides: git: url: https://github.com/TheOneWithTheBraid/keyboard_shortcuts.git ref: null-safety + win32: 5.5.0 \ No newline at end of file diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 046b1ad66..a32ad5704 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -66,7 +66,7 @@ parts: flutter-git: source: https://github.com/flutter/flutter.git - source-tag: 3.22.2 + source-tag: 3.19.6 source-depth: 1 plugin: nil override-build: | From 659174b828fa5e2729456466e8b1b4e50f310075 Mon Sep 17 00:00:00 2001 From: Krille Date: Thu, 18 Jul 2024 15:26:59 +0200 Subject: [PATCH 034/106] build: Remove permissions for screensharing until it is fixed --- android/app/src/main/AndroidManifest.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c0595780a..149424e6a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -18,14 +18,12 @@ - - Date: Thu, 18 Jul 2024 16:45:10 +0200 Subject: [PATCH 035/106] chore: Follow up navrail --- lib/pages/chat_list/chat_list_item.dart | 9 +-------- lib/pages/chat_list/chat_list_view.dart | 13 +++++++++++-- lib/widgets/avatar.dart | 7 ++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 40ca6631a..1ba515e29 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -142,14 +142,7 @@ class ChatListItem extends StatelessWidget { right: 0, child: Avatar( border: space == null - ? room.isSpace - ? BorderSide( - width: 0, - color: Theme.of(context) - .colorScheme - .outline, - ) - : null + ? null : BorderSide( width: 2, color: backgroundColor ?? diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 5bb6687a0..4391e83b0 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -4,12 +4,14 @@ import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:keyboard_shortcuts/keyboard_shortcuts.dart'; +import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat_list/chat_list.dart'; import 'package:fluffychat/pages/chat_list/navi_rail_item.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import '../../widgets/matrix.dart'; import 'chat_list_body.dart'; @@ -21,6 +23,7 @@ class ChatListView extends StatelessWidget { @override Widget build(BuildContext context) { + final client = Matrix.of(context).client; return StreamBuilder( stream: Matrix.of(context).onShareContentChanged.stream, builder: (_, __) { @@ -44,8 +47,14 @@ class ChatListView extends StatelessWidget { children: [ if (FluffyThemes.isColumnMode(context) && controller.widget.displayNavigationRail) ...[ - Builder( - builder: (context) { + StreamBuilder( + key: ValueKey( + client.userID.toString(), + ), + stream: client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, _) { final allSpaces = Matrix.of(context) .client .rooms diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index cdb7b2e7a..96aed1912 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -66,13 +66,10 @@ class Avatar extends StatelessWidget { width: size, height: size, child: Material( + color: Theme.of(context).colorScheme.surfaceContainerLowest, shape: RoundedRectangleBorder( borderRadius: borderRadius, - side: border ?? - BorderSide( - color: Theme.of(context).dividerColor, - width: 1, - ), + side: border ?? BorderSide.none, ), clipBehavior: Clip.hardEdge, child: noPic From 754870e3fd0d60e2cfbac3e9546ceea74a29fb7d Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 18 Jul 2024 16:47:58 +0200 Subject: [PATCH 036/106] chore: Follow up pop space view --- lib/pages/chat_list/chat_list_view.dart | 7 +- lib/pages/chat_list/space_view.dart | 563 ++++++++++++------------ 2 files changed, 285 insertions(+), 285 deletions(-) diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 4391e83b0..510c6c46d 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -30,9 +30,14 @@ class ChatListView extends StatelessWidget { final selectMode = controller.selectMode; return PopScope( canPop: controller.selectMode == SelectMode.normal && - !controller.isSearchMode, + !controller.isSearchMode && + controller.activeSpaceId == null, onPopInvoked: (pop) { if (pop) return; + if (controller.activeSpaceId != null) { + controller.clearActiveSpace(); + return; + } final selMode = controller.selectMode; if (controller.isSearchMode) { controller.cancelSearch(); diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 3a7fdcad0..3401aa1f1 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -165,315 +165,310 @@ class _SpaceViewState extends State { final room = Matrix.of(context).client.getRoomById(widget.spaceId); final displayname = room?.getLocalizedDisplayname() ?? L10n.of(context)!.nothingFound; - return PopScope( - canPop: false, - onPopInvoked: (_) => widget.onBack(), - child: Scaffold( - appBar: AppBar( - leading: Center( - child: CloseButton( - onPressed: widget.onBack, - ), + return Scaffold( + appBar: AppBar( + leading: Center( + child: CloseButton( + onPressed: widget.onBack, ), - titleSpacing: 0, - title: ListTile( - contentPadding: EdgeInsets.zero, - leading: Avatar( - mxContent: room?.avatar, - name: displayname, - borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), - ), - title: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - subtitle: room == null - ? null - : Text( - L10n.of(context)!.countChatsAndCountParticipants( - room.spaceChildren.length, - room.summary.mJoinedMemberCount ?? 1, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - actions: [ - PopupMenuButton( - onSelected: _onSpaceAction, - itemBuilder: (context) => [ - PopupMenuItem( - value: SpaceActions.settings, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.settings_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.settings), - ], - ), - ), - PopupMenuItem( - value: SpaceActions.invite, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.person_add_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.invite), - ], - ), - ), - PopupMenuItem( - value: SpaceActions.leave, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.delete_outlined), - const SizedBox(width: 12), - Text(L10n.of(context)!.leave), - ], - ), - ), - ], - ), - ], ), - body: room == null - ? const Center( - child: Icon( - Icons.search_outlined, - size: 80, + titleSpacing: 0, + title: ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar( + mxContent: room?.avatar, + name: displayname, + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + title: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: room == null + ? null + : Text( + L10n.of(context)!.countChatsAndCountParticipants( + room.spaceChildren.length, + room.summary.mJoinedMemberCount ?? 1, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), - ) - : StreamBuilder( - stream: room.client.onSync.stream - .where((s) => s.hasRoomUpdate) - .rateLimit(const Duration(seconds: 1)), - builder: (context, snapshot) { - final childrenIds = room.spaceChildren - .map((c) => c.roomId) - .whereType() - .toSet(); + ), + actions: [ + PopupMenuButton( + onSelected: _onSpaceAction, + itemBuilder: (context) => [ + PopupMenuItem( + value: SpaceActions.settings, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.settings), + ], + ), + ), + PopupMenuItem( + value: SpaceActions.invite, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.person_add_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.invite), + ], + ), + ), + PopupMenuItem( + value: SpaceActions.leave, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.delete_outlined), + const SizedBox(width: 12), + Text(L10n.of(context)!.leave), + ], + ), + ), + ], + ), + ], + ), + body: room == null + ? const Center( + child: Icon( + Icons.search_outlined, + size: 80, + ), + ) + : StreamBuilder( + stream: room.client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, snapshot) { + final childrenIds = room.spaceChildren + .map((c) => c.roomId) + .whereType() + .toSet(); - final joinedRooms = room.client.rooms - .where((room) => childrenIds.remove(room.id)) - .toList(); + final joinedRooms = room.client.rooms + .where((room) => childrenIds.remove(room.id)) + .toList(); - final joinedParents = room.spaceParents - .map((parent) { - final roomId = parent.roomId; - if (roomId == null) return null; - return room.client.getRoomById(roomId); - }) - .whereType() - .toList(); - final filter = _filterController.text.trim().toLowerCase(); - return CustomScrollView( - slivers: [ - SliverAppBar( - floating: true, - toolbarHeight: 72, - scrolledUnderElevation: 0, - backgroundColor: Colors.transparent, - automaticallyImplyLeading: false, - title: TextField( - controller: _filterController, - onChanged: (_) => setState(() {}), - textInputAction: TextInputAction.search, - decoration: InputDecoration( - fillColor: Theme.of(context) + final joinedParents = room.spaceParents + .map((parent) { + final roomId = parent.roomId; + if (roomId == null) return null; + return room.client.getRoomById(roomId); + }) + .whereType() + .toList(); + final filter = _filterController.text.trim().toLowerCase(); + return CustomScrollView( + slivers: [ + SliverAppBar( + floating: true, + toolbarHeight: 72, + scrolledUnderElevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: TextField( + controller: _filterController, + onChanged: (_) => setState(() {}), + textInputAction: TextInputAction.search, + decoration: InputDecoration( + fillColor: + Theme.of(context).colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context)!.search, + hintStyle: TextStyle( + color: Theme.of(context) .colorScheme - .secondaryContainer, - border: OutlineInputBorder( - borderSide: BorderSide.none, - borderRadius: BorderRadius.circular(99), - ), - contentPadding: EdgeInsets.zero, - hintText: L10n.of(context)!.search, - hintStyle: TextStyle( + .onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.search_outlined, color: Theme.of(context) .colorScheme .onPrimaryContainer, - fontWeight: FontWeight.normal, - ), - floatingLabelBehavior: FloatingLabelBehavior.never, - prefixIcon: IconButton( - onPressed: () {}, - icon: Icon( - Icons.search_outlined, - color: Theme.of(context) - .colorScheme - .onPrimaryContainer, - ), ), ), ), ), - SliverList.builder( - itemCount: joinedParents.length, - itemBuilder: (context, i) { - final displayname = - joinedParents[i].getLocalizedDisplayname(); - return Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 1, - ), - child: Material( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - clipBehavior: Clip.hardEdge, - child: ListTile( - minVerticalPadding: 0, - leading: Icon( - Icons.adaptive.arrow_back_outlined, - size: 16, - ), - title: Row( - children: [ - Avatar( - mxContent: joinedParents[i].avatar, - name: displayname, - size: Avatar.defaultSize / 2, - borderRadius: BorderRadius.circular( - AppConfig.borderRadius / 4, - ), - ), - const SizedBox(width: 8), - Expanded(child: Text(displayname)), - ], - ), - onTap: () => - widget.toParentSpace(joinedParents[i].id), + ), + SliverList.builder( + itemCount: joinedParents.length, + itemBuilder: (context, i) { + final displayname = + joinedParents[i].getLocalizedDisplayname(); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + minVerticalPadding: 0, + leading: Icon( + Icons.adaptive.arrow_back_outlined, + size: 16, ), - ), - ); - }, - ), - SliverList.builder( - itemCount: joinedRooms.length + 1, - itemBuilder: (context, i) { - if (i == 0) { - return SearchTitle( - title: L10n.of(context)!.joinedChats, - icon: const Icon(Icons.chat_outlined), - ); - } - i--; - final room = joinedRooms[i]; - return ChatListItem( - room, - filter: filter, - onTap: () => widget.onChatTab(room), - onLongPress: (context) => widget.onChatContext( - room, - context, - ), - activeChat: widget.activeChat == room.id, - ); - }, - ), - SliverList.builder( - itemCount: _discoveredChildren.length + 2, - itemBuilder: (context, i) { - if (i == 0) { - return SearchTitle( - title: L10n.of(context)!.discover, - icon: const Icon(Icons.explore_outlined), - ); - } - i--; - if (i == _discoveredChildren.length) { - if (_noMoreRooms) { - return Padding( - padding: const EdgeInsets.all(12.0), - child: Center( - child: Text( - L10n.of(context)!.noMoreChatsFound, - style: const TextStyle(fontSize: 13), + title: Row( + children: [ + Avatar( + mxContent: joinedParents[i].avatar, + name: displayname, + size: Avatar.defaultSize / 2, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 4, + ), ), - ), - ); - } - return Padding( - padding: const EdgeInsets.symmetric( - horizontal: 12.0, - vertical: 2.0, + const SizedBox(width: 8), + Expanded(child: Text(displayname)), + ], ), - child: TextButton( - onPressed: _isLoading ? null : _loadHierarchy, - child: _isLoading - ? LinearProgressIndicator( - borderRadius: BorderRadius.circular( - AppConfig.borderRadius, - ), - ) - : Text(L10n.of(context)!.loadMore), + onTap: () => + widget.toParentSpace(joinedParents[i].id), + ), + ), + ); + }, + ), + SliverList.builder( + itemCount: joinedRooms.length + 1, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.joinedChats, + icon: const Icon(Icons.chat_outlined), + ); + } + i--; + final room = joinedRooms[i]; + return ChatListItem( + room, + filter: filter, + onTap: () => widget.onChatTab(room), + onLongPress: (context) => widget.onChatContext( + room, + context, + ), + activeChat: widget.activeChat == room.id, + ); + }, + ), + SliverList.builder( + itemCount: _discoveredChildren.length + 2, + itemBuilder: (context, i) { + if (i == 0) { + return SearchTitle( + title: L10n.of(context)!.discover, + icon: const Icon(Icons.explore_outlined), + ); + } + i--; + if (i == _discoveredChildren.length) { + if (_noMoreRooms) { + return Padding( + padding: const EdgeInsets.all(12.0), + child: Center( + child: Text( + L10n.of(context)!.noMoreChatsFound, + style: const TextStyle(fontSize: 13), + ), ), ); } - final item = _discoveredChildren[i]; - final displayname = item.name ?? - item.canonicalAlias ?? - L10n.of(context)!.emptyChat; - if (!displayname.toLowerCase().contains(filter)) { - return const SizedBox.shrink(); - } return Padding( padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 1, + horizontal: 12.0, + vertical: 2.0, ), - child: Material( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - clipBehavior: Clip.hardEdge, - child: ListTile( - onTap: () => _joinChildRoom(item), - leading: Avatar( - mxContent: item.avatarUrl, - name: displayname, - borderRadius: item.roomType == 'm.space' - ? BorderRadius.circular( - AppConfig.borderRadius / 2, - ) - : null, - ), - title: Row( - children: [ - Expanded( - child: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, + child: TextButton( + onPressed: _isLoading ? null : _loadHierarchy, + child: _isLoading + ? LinearProgressIndicator( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, ), - ), - const SizedBox(width: 8), - const Icon( - Icons.add_circle_outline_outlined, - ), - ], - ), - subtitle: Text( - item.topic ?? - L10n.of(context)!.countParticipants( - item.numJoinedMembers, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), + ) + : Text(L10n.of(context)!.loadMore), ), ); - }, - ), - ], - ); - }, - ), - ), + } + final item = _discoveredChildren[i]; + final displayname = item.name ?? + item.canonicalAlias ?? + L10n.of(context)!.emptyChat; + if (!displayname.toLowerCase().contains(filter)) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + onTap: () => _joinChildRoom(item), + leading: Avatar( + mxContent: item.avatarUrl, + name: displayname, + borderRadius: item.roomType == 'm.space' + ? BorderRadius.circular( + AppConfig.borderRadius / 2, + ) + : null, + ), + title: Row( + children: [ + Expanded( + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + const SizedBox(width: 8), + const Icon( + Icons.add_circle_outline_outlined, + ), + ], + ), + subtitle: Text( + item.topic ?? + L10n.of(context)!.countParticipants( + item.numJoinedMembers, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ), + ); + }, + ), + ], + ); + }, + ), ); } } From b8345e2ca6d9ceef2136cb6ccaf4f8384801936b Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 18 Jul 2024 17:41:45 +0200 Subject: [PATCH 037/106] chore: Follow up avatars --- lib/widgets/avatar.dart | 3 +- lib/widgets/mxc_image.dart | 108 +++++++++++++++++++++++++------------ pubspec.lock | 32 ----------- pubspec.yaml | 1 - 4 files changed, 77 insertions(+), 67 deletions(-) diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 96aed1912..28524d917 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -75,7 +75,8 @@ class Avatar extends StatelessWidget { child: noPic ? textWidget : MxcImage( - key: Key(mxContent.toString()), + key: ValueKey(mxContent.toString()), + cacheKey: '${mxContent}_$size', uri: mxContent, fit: BoxFit.cover, width: size, diff --git a/lib/widgets/mxc_image.dart b/lib/widgets/mxc_image.dart index b12c9fc99..34c53cb57 100644 --- a/lib/widgets/mxc_image.dart +++ b/lib/widgets/mxc_image.dart @@ -2,7 +2,7 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'package:cached_network_image/cached_network_image.dart'; +import 'package:http/http.dart' as http; import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; @@ -18,8 +18,11 @@ class MxcImage extends StatefulWidget { final bool isThumbnail; final bool animated; final Duration retryDuration; + final Duration animationDuration; + final Curve animationCurve; final ThumbnailMethod thumbnailMethod; final Widget Function(BuildContext context)? placeholder; + final String? cacheKey; const MxcImage({ this.uri, @@ -30,8 +33,11 @@ class MxcImage extends StatefulWidget { this.placeholder, this.isThumbnail = true, this.animated = false, + this.animationDuration = FluffyThemes.animationDuration, this.retryDuration = const Duration(seconds: 2), + this.animationCurve = FluffyThemes.animationCurve, this.thumbnailMethod = ThumbnailMethod.scale, + this.cacheKey, super.key, }); @@ -40,11 +46,76 @@ class MxcImage extends StatefulWidget { } class _MxcImageState extends State { - Uint8List? _imageData; + static final Map _imageDataCache = {}; + Uint8List? _imageDataNoCache; + + Uint8List? get _imageData => widget.cacheKey == null + ? _imageDataNoCache + : _imageDataCache[widget.cacheKey]; + + set _imageData(Uint8List? data) { + if (data == null) return; + final cacheKey = widget.cacheKey; + cacheKey == null + ? _imageDataNoCache = data + : _imageDataCache[cacheKey] = data; + } + + bool? _isCached; Future _load() async { + final client = Matrix.of(context).client; + final uri = widget.uri; final event = widget.event; + if (uri != null) { + final devicePixelRatio = MediaQuery.of(context).devicePixelRatio; + final width = widget.width; + final realWidth = width == null ? null : width * devicePixelRatio; + final height = widget.height; + final realHeight = height == null ? null : height * devicePixelRatio; + + final httpUri = widget.isThumbnail + ? uri.getThumbnail( + client, + width: realWidth, + height: realHeight, + animated: widget.animated, + method: widget.thumbnailMethod, + ) + : uri.getDownloadLink(client); + + final storeKey = widget.isThumbnail ? httpUri : uri; + + if (_isCached == null) { + final cachedData = await client.database?.getFile(storeKey); + if (cachedData != null) { + if (!mounted) return; + setState(() { + _imageData = cachedData; + _isCached = true; + }); + return; + } + _isCached = false; + } + + final response = await http.get(httpUri); + if (response.statusCode != 200) { + if (response.statusCode == 404) { + return; + } + throw Exception(); + } + final remoteData = response.bodyBytes; + + if (!mounted) return; + setState(() { + _imageData = remoteData; + }); + await client.database?.storeFile(storeKey, remoteData, 0); + } + if (event != null) { final data = await event.downloadAndDecryptAttachment( getThumbnail: widget.isThumbnail, @@ -60,7 +131,7 @@ class _MxcImageState extends State { } void _tryLoad(_) async { - if (_imageData != null || widget.event == null) { + if (_imageData != null) { return; } try { @@ -89,36 +160,6 @@ class _MxcImageState extends State { @override Widget build(BuildContext context) { - final uri = widget.uri; - - if (uri != null) { - final client = Matrix.of(context).client; - final devicePixelRatio = MediaQuery.of(context).devicePixelRatio; - final width = widget.width; - final realWidth = width == null ? null : width * devicePixelRatio; - final height = widget.height; - final realHeight = height == null ? null : height * devicePixelRatio; - - final httpUri = widget.isThumbnail - ? uri.getThumbnail( - client, - width: realWidth, - height: realHeight, - animated: widget.animated, - method: widget.thumbnailMethod, - ) - : uri.getDownloadLink(client); - - return CachedNetworkImage( - imageUrl: httpUri.toString(), - width: width, - height: height, - fit: widget.fit, - placeholder: (context, _) => placeholder(context), - errorWidget: (context, _, __) => placeholder(context), - ); - } - final data = _imageData; final hasData = data != null && data.isNotEmpty; @@ -136,6 +177,7 @@ class _MxcImageState extends State { filterQuality: widget.isThumbnail ? FilterQuality.low : FilterQuality.medium, errorBuilder: (context, __, ___) { + _isCached = false; _imageData = null; WidgetsBinding.instance.addPostFrameCallback(_tryLoad); return placeholder(context); diff --git a/pubspec.lock b/pubspec.lock index afec622d5..7e3909e54 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -129,30 +129,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" - url: "https://pub.dev" - source: hosted - version: "3.3.1" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" - url: "https://pub.dev" - source: hosted - version: "1.2.0" callkeep: dependency: "direct main" description: @@ -1294,14 +1270,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" - url: "https://pub.dev" - source: hosted - version: "2.0.0" olm: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d89ef7d80..a013aeea3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,7 +14,6 @@ dependencies: async: ^2.11.0 badges: ^3.1.2 blurhash_dart: ^1.2.1 - cached_network_image: ^3.3.1 callkeep: ^0.3.2 chewie: ^1.8.1 collection: ^1.18.0 From cf59a43511ee7e7f8fa0a704ee5beccffaae108b Mon Sep 17 00:00:00 2001 From: Krille Date: Fri, 19 Jul 2024 14:50:17 +0200 Subject: [PATCH 038/106] chore: Follow up avatar default image --- lib/widgets/avatar.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 28524d917..c95444c74 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -47,8 +47,9 @@ class Avatar extends StatelessWidget { final noPic = mxContent == null || mxContent.toString().isEmpty || mxContent.toString() == 'null'; + final textColor = name?.lightColorAvatar; final textWidget = Container( - color: name?.lightColorAvatar, + color: textColor, alignment: Alignment.center, child: Text( fallbackLetters, @@ -81,7 +82,13 @@ class Avatar extends StatelessWidget { fit: BoxFit.cover, width: size, height: size, - placeholder: (_) => textWidget, + placeholder: (_) => Center( + child: Icon( + Icons.person_2, + color: textColor, + size: size / 1.5, + ), + ), ), ), ), From 152fcc0d95bcba4acc8c3920fba358016cd547ee Mon Sep 17 00:00:00 2001 From: Krille Date: Fri, 19 Jul 2024 15:01:51 +0200 Subject: [PATCH 039/106] chore: Improved create group and space design --- lib/pages/new_group/new_group.dart | 7 --- lib/pages/new_group/new_group_view.dart | 61 +++++++------------ lib/pages/new_space/new_space_view.dart | 79 +++++++++---------------- 3 files changed, 50 insertions(+), 97 deletions(-) diff --git a/lib/pages/new_group/new_group.dart b/lib/pages/new_group/new_group.dart index 584a3f885..83a8b478e 100644 --- a/lib/pages/new_group/new_group.dart +++ b/lib/pages/new_group/new_group.dart @@ -19,8 +19,6 @@ class NewGroup extends StatefulWidget { class NewGroupController extends State { TextEditingController nameController = TextEditingController(); - TextEditingController topicController = TextEditingController(); - bool publicGroup = false; bool groupCanBeFound = true; @@ -71,11 +69,6 @@ class NewGroupController extends State { : sdk.CreateRoomPreset.privateChat, groupName: nameController.text.isNotEmpty ? nameController.text : null, initialState: [ - if (topicController.text.isNotEmpty) - sdk.StateEvent( - type: sdk.EventTypes.RoomTopic, - content: {'topic': topicController.text}, - ), if (avatar != null) sdk.StateEvent( type: sdk.EventTypes.RoomAvatar, diff --git a/lib/pages/new_group/new_group_view.dart b/lib/pages/new_group/new_group_view.dart index a00ba3754..a83497d7b 100644 --- a/lib/pages/new_group/new_group_view.dart +++ b/lib/pages/new_group/new_group_view.dart @@ -31,54 +31,35 @@ class NewGroupView extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ const SizedBox(height: 16), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: Row( - children: [ - InkWell( - borderRadius: BorderRadius.circular(90), - onTap: controller.loading ? null : controller.selectPhoto, - child: CircleAvatar( - radius: Avatar.defaultSize / 2, - child: avatar == null - ? const Icon(Icons.camera_alt_outlined) - : ClipRRect( - borderRadius: BorderRadius.circular(90), - child: Image.memory( - avatar, - width: Avatar.defaultSize, - height: Avatar.defaultSize, - fit: BoxFit.cover, - ), - ), - ), - ), - const SizedBox(width: 16), - Expanded( - child: TextField( - controller: controller.nameController, - autocorrect: false, - readOnly: controller.loading, - decoration: InputDecoration( - prefixIcon: const Icon(Icons.people_outlined), - hintText: L10n.of(context)!.groupName, + InkWell( + borderRadius: BorderRadius.circular(90), + onTap: controller.loading ? null : controller.selectPhoto, + child: CircleAvatar( + radius: Avatar.defaultSize, + child: avatar == null + ? const Icon(Icons.add_a_photo_outlined) + : ClipRRect( + borderRadius: BorderRadius.circular(90), + child: Image.memory( + avatar, + width: Avatar.defaultSize, + height: Avatar.defaultSize, + fit: BoxFit.cover, + ), ), - ), - ), - ], ), ), - const SizedBox(height: 16), + const SizedBox(height: 32), Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: TextField( - controller: controller.topicController, - minLines: 4, - maxLines: 4, - maxLength: 255, + autofocus: true, + controller: controller.nameController, + autocorrect: false, readOnly: controller.loading, decoration: InputDecoration( - hintText: L10n.of(context)!.addChatDescription, + prefixIcon: const Icon(Icons.people_outlined), + hintText: L10n.of(context)!.groupName, ), ), ), diff --git a/lib/pages/new_space/new_space_view.dart b/lib/pages/new_space/new_space_view.dart index eb464855e..e90c7a84e 100644 --- a/lib/pages/new_space/new_space_view.dart +++ b/lib/pages/new_space/new_space_view.dart @@ -22,65 +22,37 @@ class NewSpaceView extends StatelessWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - ListTile( - trailing: const Padding( - padding: EdgeInsets.symmetric(horizontal: 16.0), - child: Icon(Icons.info_outlined), - ), - subtitle: Text(L10n.of(context)!.newSpaceDescription), - ), const SizedBox(height: 16), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - InkWell( - borderRadius: BorderRadius.circular(90), - onTap: controller.loading ? null : controller.selectPhoto, - child: CircleAvatar( - radius: Avatar.defaultSize / 2, - child: avatar == null - ? const Icon(Icons.camera_alt_outlined) - : ClipRRect( - borderRadius: BorderRadius.circular(90), - child: Image.memory( - avatar, - width: Avatar.defaultSize, - height: Avatar.defaultSize, - fit: BoxFit.cover, - ), - ), - ), - ), - const SizedBox(width: 16), - Expanded( - child: TextField( - controller: controller.nameController, - autocorrect: false, - readOnly: controller.loading, - decoration: InputDecoration( - prefixIcon: const Icon(Icons.people_outlined), - hintText: L10n.of(context)!.spaceName, - errorText: controller.nameError, + InkWell( + borderRadius: BorderRadius.circular(90), + onTap: controller.loading ? null : controller.selectPhoto, + child: CircleAvatar( + radius: Avatar.defaultSize, + child: avatar == null + ? const Icon(Icons.add_a_photo_outlined) + : ClipRRect( + borderRadius: BorderRadius.circular(90), + child: Image.memory( + avatar, + width: Avatar.defaultSize, + height: Avatar.defaultSize, + fit: BoxFit.cover, + ), ), - ), - ), - ], ), ), - const SizedBox(height: 16), + const SizedBox(height: 32), Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: TextField( - controller: controller.topicController, - minLines: 4, - maxLines: 4, - maxLength: 255, + autofocus: true, + controller: controller.nameController, + autocorrect: false, readOnly: controller.loading, decoration: InputDecoration( - hintText: L10n.of(context)!.addChatDescription, - errorText: controller.topicError, + prefixIcon: const Icon(Icons.people_outlined), + hintText: L10n.of(context)!.spaceName, + errorText: controller.nameError, ), ), ), @@ -90,6 +62,13 @@ class NewSpaceView extends StatelessWidget { value: controller.publicGroup, onChanged: controller.setPublicGroup, ), + ListTile( + trailing: const Padding( + padding: EdgeInsets.symmetric(horizontal: 16.0), + child: Icon(Icons.info_outlined), + ), + subtitle: Text(L10n.of(context)!.newSpaceDescription), + ), Padding( padding: const EdgeInsets.all(16.0), child: SizedBox( From 7fef3a69d80f0bd27ad32d5434bdb44bcbf1e10d Mon Sep 17 00:00:00 2001 From: Krille Date: Fri, 19 Jul 2024 15:30:04 +0200 Subject: [PATCH 040/106] chore: Follow up avatars --- lib/widgets/avatar.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index c95444c74..a9d12f6a5 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -55,7 +55,8 @@ class Avatar extends StatelessWidget { fallbackLetters, style: TextStyle( color: Colors.white, - fontSize: (size / 2.5).roundToDouble(), + fontWeight: FontWeight.bold, + fontSize: (size / 3).roundToDouble(), ), ), ); @@ -85,7 +86,7 @@ class Avatar extends StatelessWidget { placeholder: (_) => Center( child: Icon( Icons.person_2, - color: textColor, + color: Theme.of(context).colorScheme.tertiary, size: size / 1.5, ), ), From e178ab44166b7ef17ffa1728c39dc49fe565b02d Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sat, 20 Jul 2024 08:01:06 +0200 Subject: [PATCH 041/106] chore: Follow up avatar background --- lib/widgets/avatar.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index a9d12f6a5..c3e24fe16 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -68,7 +68,9 @@ class Avatar extends StatelessWidget { width: size, height: size, child: Material( - color: Theme.of(context).colorScheme.surfaceContainerLowest, + color: Theme.of(context).brightness == Brightness.light + ? Colors.white + : Colors.black, shape: RoundedRectangleBorder( borderRadius: borderRadius, side: border ?? BorderSide.none, From 0760acaa40a4e30d85f8c0eed35c6df7a7e7e660 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Mon, 22 Jul 2024 19:42:27 +0200 Subject: [PATCH 042/106] chore: Bring back separate chat types --- lib/config/app_config.dart | 1 + lib/config/setting_keys.dart | 1 + lib/pages/chat_list/chat_list.dart | 7 ++++++- lib/pages/chat_list/chat_list_body.dart | 7 +++++-- lib/pages/settings_style/settings_style_view.dart | 6 ++++++ lib/widgets/matrix.dart | 4 ++++ 6 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 6ee20d337..841d810ec 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -44,6 +44,7 @@ abstract class AppConfig { static bool hideRedactedEvents = false; static bool hideUnknownEvents = true; static bool hideUnimportantStateEvents = true; + static bool separateChatTypes = false; static bool autoplayImages = true; static bool sendTypingNotifications = true; static bool sendPublicReadReceipts = true; diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 5b795b08e..7c0e50df8 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -4,6 +4,7 @@ abstract class SettingKeys { static const String hideUnknownEvents = 'chat.fluffy.hideUnknownEvents'; static const String hideUnimportantStateEvents = 'chat.fluffy.hideUnimportantStateEvents'; + static const String separateChatTypes = 'chat.fluffy.separateChatTypes'; static const String sentry = 'sentry'; static const String theme = 'theme'; static const String amoledEnabled = 'amoled_enabled'; diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 50237a569..13ce54053 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -50,8 +50,9 @@ enum PopupMenuAction { enum ActiveFilter { allChats, - unread, + messages, groups, + unread, spaces, } @@ -60,6 +61,8 @@ extension LocalizedActiveFilter on ActiveFilter { switch (this) { case ActiveFilter.allChats: return L10n.of(context)!.all; + case ActiveFilter.messages: + return L10n.of(context)!.messages; case ActiveFilter.unread: return L10n.of(context)!.unread; case ActiveFilter.groups: @@ -321,6 +324,8 @@ class ChatListController extends State switch (activeFilter) { case ActiveFilter.allChats: return (room) => true; + case ActiveFilter.messages: + return (room) => !room.isSpace && room.isDirectChat; case ActiveFilter.groups: return (room) => !room.isSpace && !room.isDirectChat; case ActiveFilter.unread: diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index e596440b3..d78a88e34 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -165,9 +165,12 @@ class ChatListViewBody extends StatelessWidget { shrinkWrap: true, scrollDirection: Axis.horizontal, children: [ - ActiveFilter.allChats, - ActiveFilter.unread, + if (AppConfig.separateChatTypes) + ActiveFilter.messages + else + ActiveFilter.allChats, ActiveFilter.groups, + ActiveFilter.unread, if (spaceDelegateCandidates.isNotEmpty && !controller.widget.displayNavigationRail) ActiveFilter.spaces, diff --git a/lib/pages/settings_style/settings_style_view.dart b/lib/pages/settings_style/settings_style_view.dart index 0b505d597..86f48fe87 100644 --- a/lib/pages/settings_style/settings_style_view.dart +++ b/lib/pages/settings_style/settings_style_view.dart @@ -185,6 +185,12 @@ class SettingsStyleView extends StatelessWidget { storeKey: SettingKeys.showPresences, defaultValue: AppConfig.showPresences, ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context)!.separateChatTypes, + onChanged: (b) => AppConfig.separateChatTypes = b, + storeKey: SettingKeys.separateChatTypes, + defaultValue: AppConfig.separateChatTypes, + ), Divider( height: 1, color: Theme.of(context).dividerColor, diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 581e3ccff..4de23a2f5 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -433,6 +433,10 @@ class MatrixState extends State with WidgetsBindingObserver { store.getBool(SettingKeys.hideUnimportantStateEvents) ?? AppConfig.hideUnimportantStateEvents; + AppConfig.separateChatTypes = + store.getBool(SettingKeys.separateChatTypes) ?? + AppConfig.separateChatTypes; + AppConfig.autoplayImages = store.getBool(SettingKeys.autoplayImages) ?? AppConfig.autoplayImages; From a500a91b6bba6ec5ae411de473b76c75829baa2a Mon Sep 17 00:00:00 2001 From: krille-chan Date: Mon, 22 Jul 2024 20:06:07 +0200 Subject: [PATCH 043/106] chore: Follow up add chat or subspace UX --- lib/pages/chat_list/chat_list.dart | 107 ++---------------- lib/pages/chat_list/chat_list_view.dart | 6 +- lib/pages/chat_list/space_view.dart | 141 ++++++++++++++++++++++-- 3 files changed, 145 insertions(+), 109 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 13ce54053..befba299a 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -105,107 +105,18 @@ class ChatListController extends State String? _activeSpaceId; String? get activeSpaceId => _activeSpaceId; - void setActiveSpace(String spaceId) => setState(() { - _activeSpaceId = spaceId; - }); + void setActiveSpace(String spaceId) async { + await Matrix.of(context).client.getRoomById(spaceId)!.postLoad(); + + setState(() { + _activeSpaceId = spaceId; + }); + } + void clearActiveSpace() => setState(() { _activeSpaceId = null; }); - void addChatAction() async { - if (activeSpaceId == null) { - context.go('/rooms/newprivatechat'); - return; - } - - final roomType = await showConfirmationDialog( - context: context, - title: L10n.of(context)!.addChatOrSubSpace, - actions: [ - AlertDialogAction( - key: AddRoomType.subspace, - label: L10n.of(context)!.createNewSpace, - ), - AlertDialogAction( - key: AddRoomType.chat, - label: L10n.of(context)!.createGroup, - ), - ], - ); - if (roomType == null) return; - - final names = await showTextInputDialog( - context: context, - title: roomType == AddRoomType.subspace - ? L10n.of(context)!.createNewSpace - : L10n.of(context)!.createGroup, - textFields: [ - DialogTextField( - hintText: roomType == AddRoomType.subspace - ? L10n.of(context)!.spaceName - : L10n.of(context)!.groupName, - minLines: 1, - maxLines: 1, - maxLength: 64, - validator: (text) { - if (text == null || text.isEmpty) { - return L10n.of(context)!.pleaseChoose; - } - return null; - }, - ), - DialogTextField( - hintText: L10n.of(context)!.chatDescription, - minLines: 4, - maxLines: 8, - maxLength: 255, - ), - ], - okLabel: L10n.of(context)!.create, - cancelLabel: L10n.of(context)!.cancel, - ); - if (names == null) return; - final client = Matrix.of(context).client; - final result = await showFutureLoadingDialog( - context: context, - future: () async { - late final String roomId; - final activeSpace = client.getRoomById(activeSpaceId!)!; - await activeSpace.postLoad(); - - if (roomType == AddRoomType.subspace) { - roomId = await client.createSpace( - name: names.first, - topic: names.last.isEmpty ? null : names.last, - visibility: activeSpace.joinRules == JoinRules.public - ? sdk.Visibility.public - : sdk.Visibility.private, - ); - } else { - roomId = await client.createGroupChat( - groupName: names.first, - preset: activeSpace.joinRules == JoinRules.public - ? CreateRoomPreset.publicChat - : CreateRoomPreset.privateChat, - visibility: activeSpace.joinRules == JoinRules.public - ? sdk.Visibility.public - : sdk.Visibility.private, - initialState: names.length > 1 && names.last.isNotEmpty - ? [ - sdk.StateEvent( - type: sdk.EventTypes.RoomTopic, - content: {'topic': names.last}, - ), - ] - : null, - ); - } - await activeSpace.setSpaceChild(roomId); - }, - ); - if (result.error != null) return; - } - void onChatTap(Room room) async { if (room.membership == Membership.invite) { final inviterId = @@ -1004,8 +915,6 @@ enum InviteActions { block, } -enum AddRoomType { chat, subspace } - enum ChatContextAction { open, goToSpace, diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart index 510c6c46d..a106e5dd7 100644 --- a/lib/pages/chat_list/chat_list_view.dart +++ b/lib/pages/chat_list/chat_list_view.dart @@ -146,9 +146,11 @@ class ChatListView extends StatelessWidget { onKeysPressed: () => context.go('/rooms/newprivatechat'), helpLabel: L10n.of(context)!.newChat, child: selectMode == SelectMode.normal && - !controller.isSearchMode + !controller.isSearchMode && + controller.activeSpaceId == null ? FloatingActionButton.extended( - onPressed: controller.addChatAction, + onPressed: () => + context.go('/rooms/newprivatechat'), icon: const Icon(Icons.add_outlined), label: Text( L10n.of(context)!.chat, diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 3401aa1f1..5ad99faa8 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -5,6 +5,7 @@ import 'package:collection/collection.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart' as sdk; import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; @@ -15,6 +16,8 @@ import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; +enum AddRoomType { chat, subspace } + class SpaceView extends StatefulWidget { final String spaceId; final void Function() onBack; @@ -160,6 +163,95 @@ class _SpaceViewState extends State { } } + void _addChatOrSubspace() async { + final roomType = await showConfirmationDialog( + context: context, + title: L10n.of(context)!.addChatOrSubSpace, + actions: [ + AlertDialogAction( + key: AddRoomType.subspace, + label: L10n.of(context)!.createNewSpace, + ), + AlertDialogAction( + key: AddRoomType.chat, + label: L10n.of(context)!.createGroup, + ), + ], + ); + if (roomType == null) return; + + final names = await showTextInputDialog( + context: context, + title: roomType == AddRoomType.subspace + ? L10n.of(context)!.createNewSpace + : L10n.of(context)!.createGroup, + textFields: [ + DialogTextField( + hintText: roomType == AddRoomType.subspace + ? L10n.of(context)!.spaceName + : L10n.of(context)!.groupName, + minLines: 1, + maxLines: 1, + maxLength: 64, + validator: (text) { + if (text == null || text.isEmpty) { + return L10n.of(context)!.pleaseChoose; + } + return null; + }, + ), + DialogTextField( + hintText: L10n.of(context)!.chatDescription, + minLines: 4, + maxLines: 8, + maxLength: 255, + ), + ], + okLabel: L10n.of(context)!.create, + cancelLabel: L10n.of(context)!.cancel, + ); + if (names == null) return; + final client = Matrix.of(context).client; + final result = await showFutureLoadingDialog( + context: context, + future: () async { + late final String roomId; + final activeSpace = client.getRoomById(widget.spaceId)!; + await activeSpace.postLoad(); + + if (roomType == AddRoomType.subspace) { + roomId = await client.createSpace( + name: names.first, + topic: names.last.isEmpty ? null : names.last, + visibility: activeSpace.joinRules == JoinRules.public + ? sdk.Visibility.public + : sdk.Visibility.private, + ); + } else { + roomId = await client.createGroupChat( + groupName: names.first, + preset: activeSpace.joinRules == JoinRules.public + ? CreateRoomPreset.publicChat + : CreateRoomPreset.privateChat, + visibility: activeSpace.joinRules == JoinRules.public + ? sdk.Visibility.public + : sdk.Visibility.private, + initialState: names.length > 1 && names.last.isNotEmpty + ? [ + StateEvent( + type: EventTypes.RoomTopic, + content: {'topic': names.last}, + ), + ] + : null, + ); + } + await activeSpace.setSpaceChild(roomId); + }, + ); + if (result.error != null) return; + } + @override Widget build(BuildContext context) { final room = Matrix.of(context).client.getRoomById(widget.spaceId); @@ -352,22 +444,55 @@ class _SpaceViewState extends State { itemCount: joinedRooms.length + 1, itemBuilder: (context, i) { if (i == 0) { - return SearchTitle( - title: L10n.of(context)!.joinedChats, - icon: const Icon(Icons.chat_outlined), + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (room.canChangeStateEvent( + EventTypes.SpaceChild, + ) && + filter.isEmpty) ...[ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + clipBehavior: Clip.hardEdge, + child: ListTile( + onTap: _addChatOrSubspace, + leading: const CircleAvatar( + radius: Avatar.defaultSize / 2, + child: Icon(Icons.add_outlined), + ), + title: Text( + L10n.of(context)!.addChatOrSubSpace, + style: const TextStyle(fontSize: 14), + ), + ), + ), + ), + ], + SearchTitle( + title: L10n.of(context)!.joinedChats, + icon: const Icon(Icons.chat_outlined), + ), + ], ); } i--; - final room = joinedRooms[i]; + final joinedRoom = joinedRooms[i]; return ChatListItem( - room, + joinedRoom, filter: filter, - onTap: () => widget.onChatTab(room), + onTap: () => widget.onChatTab(joinedRoom), onLongPress: (context) => widget.onChatContext( - room, + joinedRoom, context, ), - activeChat: widget.activeChat == room.id, + activeChat: widget.activeChat == joinedRoom.id, ); }, ), From 9e737276b629fc16455ad4807508d29f36b26a89 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Mon, 22 Jul 2024 20:06:55 +0200 Subject: [PATCH 044/106] chore: Follow up active filter --- lib/pages/chat_list/chat_list.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index befba299a..63cb35571 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -100,7 +100,9 @@ class ChatListController extends State context.push('/rooms/newspace'); } - ActiveFilter activeFilter = ActiveFilter.allChats; + ActiveFilter activeFilter = AppConfig.separateChatTypes + ? ActiveFilter.messages + : ActiveFilter.allChats; String? _activeSpaceId; String? get activeSpaceId => _activeSpaceId; From 020b6768ebe0d65e0d228e2f133d6293c6faf364 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Wed, 24 Jul 2024 06:48:52 +0200 Subject: [PATCH 045/106] chore: Sligthly improve chat permissions page design --- assets/l10n/intl_en.arb | 32 ++++++++++++- .../permission_list_tile.dart | 46 +++++++++++-------- 2 files changed, 58 insertions(+), 20 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 6c6da498a..f7016107b 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -673,7 +673,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "Default permission level", + "defaultPermissionLevel": "Default permission level for new users", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2711,5 +2711,33 @@ "type": "text", "space": {} }, - "markAsUnread": "Mark as unread" + "markAsUnread": "Mark as unread", + "userLevel": "{level} - User", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - Admin", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeGeneralChatSettings": "Change general chat settings", + "inviteOtherUsers": "Invite other users to this chat", + "changeTheChatPermissions": "Change the chat permissions", + "changeTheVisibilityOfChatHistory": "Change the visibility of the chat history", + "changeTheCanonicalRoomAlias": "Change the main public chat address", + "sendRoomNotifications": "Send a @room notifications", + "changeTheDescriptionOfTheGroup": "Change the description of the chat" } diff --git a/lib/pages/chat_permissions_settings/permission_list_tile.dart b/lib/pages/chat_permissions_settings/permission_list_tile.dart index af447cbec..99f9e553b 100644 --- a/lib/pages/chat_permissions_settings/permission_list_tile.dart +++ b/lib/pages/chat_permissions_settings/permission_list_tile.dart @@ -29,7 +29,7 @@ class PermissionsListTile extends StatelessWidget { case 'events_default': return L10n.of(context)!.sendMessages; case 'state_default': - return L10n.of(context)!.configureChat; + return L10n.of(context)!.changeGeneralChatSettings; case 'ban': return L10n.of(context)!.banFromChat; case 'kick': @@ -37,23 +37,25 @@ class PermissionsListTile extends StatelessWidget { case 'redact': return L10n.of(context)!.deleteMessage; case 'invite': - return L10n.of(context)!.inviteContact; + return L10n.of(context)!.inviteOtherUsers; } } else if (category == 'notifications') { switch (permissionKey) { case 'rooms': - return L10n.of(context)!.notifications; + return L10n.of(context)!.sendRoomNotifications; } } else if (category == 'events') { switch (permissionKey) { case EventTypes.RoomName: return L10n.of(context)!.changeTheNameOfTheGroup; + case EventTypes.RoomTopic: + return L10n.of(context)!.changeTheDescriptionOfTheGroup; case EventTypes.RoomPowerLevels: - return L10n.of(context)!.chatPermissions; + return L10n.of(context)!.changeTheChatPermissions; case EventTypes.HistoryVisibility: - return L10n.of(context)!.visibilityOfTheChatHistory; + return L10n.of(context)!.changeTheVisibilityOfChatHistory; case EventTypes.RoomCanonicalAlias: - return L10n.of(context)!.setInvitationLink; + return L10n.of(context)!.changeTheCanonicalRoomAlias; case EventTypes.RoomAvatar: return L10n.of(context)!.editRoomAvatar; case EventTypes.RoomTombstone: @@ -69,32 +71,40 @@ class PermissionsListTile extends StatelessWidget { @override Widget build(BuildContext context) { + final color = permission >= 100 + ? Colors.orangeAccent + : permission >= 50 + ? Colors.blueAccent + : Colors.greenAccent; return ListTile( - title: Text(getLocalizedPowerLevelString(context)), - subtitle: Text( - L10n.of(context)!.minimumPowerLevel(permission.toString()), + title: Text( + getLocalizedPowerLevelString(context), + style: Theme.of(context).textTheme.titleSmall, ), trailing: Material( - borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), - color: Theme.of(context).colorScheme.onInverseSurface, + color: color.withAlpha(64), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + side: BorderSide(color: color), + ), child: DropdownButton( padding: const EdgeInsets.symmetric(horizontal: 8.0), borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), underline: const SizedBox.shrink(), onChanged: canEdit ? onChanged : null, - value: {0, 50, 100}.contains(permission) ? permission : null, + value: permission, items: [ DropdownMenuItem( - value: 0, - child: Text(L10n.of(context)!.user), + value: permission < 50 ? permission : 0, + child: Text(L10n.of(context)!.userLevel(permission)), ), DropdownMenuItem( - value: 50, - child: Text(L10n.of(context)!.moderator), + value: permission < 100 && permission >= 50 ? permission : 50, + child: Text(L10n.of(context)!.moderatorLevel(permission)), ), DropdownMenuItem( - value: 100, - child: Text(L10n.of(context)!.admin), + value: permission >= 100 ? permission : 100, + child: Text(L10n.of(context)!.adminLevel(permission)), ), DropdownMenuItem( value: null, From fcd3227ef568ddf5a6d97838cb39c4576c548356 Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 24 Jul 2024 08:37:16 +0200 Subject: [PATCH 046/106] fix: Display only available join rules --- .../chat_access_settings_controller.dart | 30 +++++++++++++++++++ .../chat_access_settings_page.dart | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat_access_settings/chat_access_settings_controller.dart b/lib/pages/chat_access_settings/chat_access_settings_controller.dart index c0ab1fa7a..fd7624790 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_controller.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_controller.dart @@ -24,6 +24,36 @@ class ChatAccessSettingsController extends State { bool guestAccessLoading = false; Room get room => Matrix.of(context).client.getRoomById(widget.roomId)!; + String get roomVersion => + room + .getState(EventTypes.RoomCreate)! + .content + .tryGet('room_version') ?? + 'Unknown'; + + /// Calculates which join rules are available based on the information on + /// https://spec.matrix.org/v1.11/rooms/#feature-matrix + List get availableJoinRules { + final joinRules = Set.from(JoinRules.values); + + final roomVersionInt = int.tryParse(roomVersion); + + // Knock is only supported for rooms up from version 7: + if (roomVersionInt != null && roomVersionInt <= 6) { + joinRules.remove(JoinRules.knock); + } + + // Not yet supported in FluffyChat: + joinRules.remove(JoinRules.restricted); + joinRules.remove(JoinRules.knockRestricted); + + // If an unsupported join rule is the current join rule, display it: + final currentJoinRule = room.joinRules; + if (currentJoinRule != null) joinRules.add(currentJoinRule); + + return joinRules.toList(); + } + void setJoinRule(JoinRules? newJoinRules) async { if (newJoinRules == null) return; setState(() { diff --git a/lib/pages/chat_access_settings/chat_access_settings_page.dart b/lib/pages/chat_access_settings/chat_access_settings_page.dart index 7de6f3793..c23d9dc6b 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_page.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_page.dart @@ -66,7 +66,7 @@ class ChatAccessSettingsPageView extends StatelessWidget { ), ), ), - for (final joinRule in JoinRules.values) + for (final joinRule in controller.availableJoinRules) if (joinRule != JoinRules.private) RadioListTile.adaptive( title: Text( From 9d0cefce1837b9b5c69d15a828440dd535d36510 Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 24 Jul 2024 08:37:33 +0200 Subject: [PATCH 047/106] chore: Do not hide error on file sending --- lib/pages/chat/send_file_dialog.dart | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/pages/chat/send_file_dialog.dart b/lib/pages/chat/send_file_dialog.dart index b50a7d19e..f97a4f2c6 100644 --- a/lib/pages/chat/send_file_dialog.dart +++ b/lib/pages/chat/send_file_dialog.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -6,7 +8,7 @@ import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; -import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/size_string.dart'; import '../../utils/resize_image.dart'; @@ -42,19 +44,20 @@ class SendFileDialogState extends State { }, ); } - final scaffoldMessenger = ScaffoldMessenger.of(context); - widget.room - .sendFileEvent( - file, - thumbnail: thumbnail, - shrinkImageMaxDimension: origImage ? null : 1600, - ) - .catchError((e) { - scaffoldMessenger.showSnackBar( - SnackBar(content: Text((e as Object).toLocalizedString(context))), + try { + await widget.room.sendFileEvent( + file, + thumbnail: thumbnail, + shrinkImageMaxDimension: origImage ? null : 1600, ); - return null; - }); + } on IOException catch (_) { + } on FileTooBigMatrixException catch (_) { + } catch (e, s) { + if (mounted) { + ErrorReporter(context, 'Unable to send file').onErrorCallback(e, s); + } + rethrow; + } } Navigator.of(context, rootNavigator: false).pop(); From 76bc414293d707d437acddaa51f0fc58245e3d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E7=81=AB=20Shiranui?= Date: Tue, 16 Jul 2024 17:35:19 +0000 Subject: [PATCH 048/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 126 +++++++++++++++++------------------ 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 45740dd52..f7837bd4e 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -98,7 +98,7 @@ "username": {} } }, - "badServerLoginTypesException": "目前伺服器支援的登入類型:\n {serverVersions} \n但本應用程式僅支援:\n {supportedVersions}", + "badServerLoginTypesException": "目前伺服器支援的登入類型:\n{serverVersions}\n但本應用程式僅支援:\n{supportedVersions}", "@badServerLoginTypesException": { "type": "text", "placeholders": { @@ -106,7 +106,7 @@ "supportedVersions": {} } }, - "badServerVersionsException": "目前伺服器支援的Spec版本:\n {serverVersions} \n但本應用程式僅支援 {supportedVersions}", + "badServerVersionsException": "目前伺服器支援的協議版本:\n{serverVersions}\n但本應用程式僅支援 {supportedVersions}", "@badServerVersionsException": { "type": "text", "placeholders": { @@ -164,7 +164,7 @@ "username": {} } }, - "changedTheChatDescriptionTo": "{username} 變更了聊天室介紹為:「 {description} 」", + "changedTheChatDescriptionTo": "{username} 變更了聊天室介紹為:「{description}」", "@changedTheChatDescriptionTo": { "type": "text", "placeholders": { @@ -172,7 +172,7 @@ "description": {} } }, - "changedTheChatNameTo": "{username} 變更了聊天室名稱為:「 {chatname} 」", + "changedTheChatNameTo": "{username} 變更了聊天室名稱為:「{chatname}」", "@changedTheChatNameTo": { "type": "text", "placeholders": { @@ -187,7 +187,7 @@ "username": {} } }, - "changedTheDisplaynameTo": "{username} 變更了顯示名稱為:「 {displayname} 」", + "changedTheDisplaynameTo": "{username} 變更了顯示名稱為:「{displayname}」", "@changedTheDisplaynameTo": { "type": "text", "placeholders": { @@ -562,7 +562,7 @@ "type": "text", "placeholders": {} }, - "encrypted": "加密的", + "encrypted": "已加密的", "@encrypted": { "type": "text", "placeholders": {} @@ -764,7 +764,7 @@ "type": "text", "placeholders": {} }, - "inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:\n {link}", + "inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:\n{link}", "@inviteText": { "type": "text", "placeholders": { @@ -896,12 +896,12 @@ "type": "text", "placeholders": {} }, - "needPantalaimonWarning": "請注意您需要Pantalaimon才能使用點對點加密功能。", + "needPantalaimonWarning": "請注意您需要 Pantalaimon 才能使用點對點加密功能。", "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "newChat": "新聊天室", + "newChat": "新聊天", "@newChat": { "type": "text", "placeholders": {} @@ -941,7 +941,7 @@ "type": "text", "placeholders": {} }, - "noGoogleServicesWarning": "看起來您手機上沒有Google服務框架。這對於保護您的隱私而言是個好決定!但為了收到 FluffyChat 的推播通知,我們推薦您使用 https://microg.org/ 或 https://unifiedpush.org/。", + "noGoogleServicesWarning": "您手機上沒有安裝 Google 服務框架。這或許對於保護您的隱私而言是個好事!但為了收到 FluffyChat 的推播通知,我們建議您使用 https://microg.org 或 https://unifiedpush.org。", "@noGoogleServicesWarning": { "type": "text", "placeholders": {} @@ -1176,7 +1176,7 @@ "type": "text", "placeholders": {} }, - "unbanFromChat": "解禁聊天室", + "unbanFromChat": "解封聊天室", "@unbanFromChat": { "type": "text", "placeholders": {} @@ -1320,7 +1320,7 @@ "type": "text", "placeholders": {} }, - "setPermissionsLevel": "設定權限級別", + "setPermissionsLevel": "設定權限等級", "@setPermissionsLevel": { "type": "text", "placeholders": {} @@ -1415,7 +1415,7 @@ "type": "text", "placeholders": {} }, - "toggleUnread": "標記為已讀/未讀", + "toggleUnread": "標示為已讀/未讀", "@toggleUnread": { "type": "text", "placeholders": {} @@ -1463,7 +1463,7 @@ "type": "text", "placeholders": {} }, - "unknownEvent": "未知事件「 {type} 」", + "unknownEvent": "未知事件「{type}」", "@unknownEvent": { "type": "text", "placeholders": { @@ -1625,7 +1625,7 @@ "type": "text", "placeholders": {} }, - "wipeChatBackup": "要清除您的聊天室記錄備份以建立新的安全金鑰嗎?", + "wipeChatBackup": "是否清除您的聊天室記錄備份以建立新的安全金鑰嗎?", "@wipeChatBackup": { "type": "text", "placeholders": {} @@ -1742,7 +1742,7 @@ }, "addToSpace": "加入空間", "@addToSpace": {}, - "cantOpenUri": "無法打開URI {uri}", + "cantOpenUri": "無法打開 URI {uri}", "@cantOpenUri": { "type": "text", "placeholders": { @@ -1758,7 +1758,7 @@ "type": "text", "placeholders": {} }, - "commandHint_myroomavatar": "設置您的聊天室頭貼(通過 mxc-uri)", + "commandHint_myroomavatar": "設定您的聊天室頭貼(通過 mxc-uri)", "@commandHint_myroomavatar": { "type": "text", "description": "Usage hint for the command /myroomavatar" @@ -1773,7 +1773,7 @@ "type": "text", "placeholder": {} }, - "sendOnEnter": "按 Enter 鍵發送", + "sendOnEnter": "按 Enter 鍵傳送", "@sendOnEnter": {}, "changeYourAvatar": "更改您的大頭貼", "@changeYourAvatar": { @@ -1791,7 +1791,7 @@ "senderName": {} } }, - "commandHint_cuddle": "發送一個摟抱表情", + "commandHint_cuddle": "傳送一個摟抱表情", "@commandHint_cuddle": {}, "supposedMxid": "此處應爲 {mxid}", "@supposedMxid": { @@ -1820,7 +1820,7 @@ }, "description": "State that {command} is not a valid /command." }, - "googlyEyesContent": "{senderName} 向您發送了瞪眼表情", + "googlyEyesContent": "{senderName} 向您傳送了瞪眼表情", "@googlyEyesContent": { "type": "text", "placeholders": { @@ -1833,7 +1833,7 @@ "@sendTypingNotifications": {}, "importEmojis": "匯入表情包", "@importEmojis": {}, - "confirmMatrixId": "如需要刪除你的帳戶,請確認你的 Matrix ID。", + "confirmMatrixId": "如需刪除你的帳戶,請確認你的 Matrix ID。", "@confirmMatrixId": {}, "notAnImage": "不是圖片檔案。", "@notAnImage": {}, @@ -1844,11 +1844,11 @@ "senderName": {} } }, - "commandHint_hug": "發送一個擁抱表情", + "commandHint_hug": "傳送一個擁抱表情", "@commandHint_hug": {}, "replace": "取代", "@replace": {}, - "commandHint_googly": "發送一些瞪眼表情", + "commandHint_googly": "傳送一些瞪眼表情", "@commandHint_googly": {}, "importNow": "立即匯入", "@importNow": {}, @@ -1864,31 +1864,31 @@ "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, - "sender": "發送者", + "sender": "傳送者", "@sender": {}, "voiceCall": "語音通話", "@voiceCall": {}, - "blockUsername": "忽略使用者名稱", + "blockUsername": "無視使用者名稱", "@blockUsername": {}, "noBackupWarning": "警告!如果不啟用聊天室備份,您將失去對加密訊息的訪問。強烈建議在登出前先啟用聊天室備份。", "@noBackupWarning": {}, "addChatOrSubSpace": "新增聊天室或子空間", "@addChatOrSubSpace": {}, - "thisDevice": "這個設備:", + "thisDevice": "這個裝置:", "@thisDevice": {}, "separateChatTypes": "分開私訊和群組", "@separateChatTypes": { "type": "text", "placeholders": {} }, - "commandHint_markasdm": "將給定的 Matrix ID 標記為直接訊息房間", + "commandHint_markasdm": "將給定的 Matrix ID 標示為直接訊息房間", "@commandHint_markasdm": {}, - "commandHint_html": "發送 HTML 格式的文字", + "commandHint_html": "傳送 HTML 格式的文字", "@commandHint_html": { "type": "text", "description": "Usage hint for the command /html" }, - "commandHint_send": "發送文字", + "commandHint_send": "傳送文字", "@commandHint_send": { "type": "text", "description": "Usage hint for the command /send" @@ -1904,7 +1904,7 @@ "@optionalRedactReason": {}, "dehydrateWarning": "此操作不能反悔。請確保安全地存儲備份文件。", "@dehydrateWarning": {}, - "hydrateTorLong": "上次在 TOR 上匯出會話了嗎?快速匯入它並繼續聊天室。", + "hydrateTorLong": "上次在 TOR 上匯出會話了嗎?快速匯入它已繼續使用聊天室。", "@hydrateTorLong": {}, "hydrate": "從備份文件恢復", "@hydrate": {}, @@ -1930,7 +1930,7 @@ "type": "text", "placeholders": {} }, - "redactedByBecause": "由 {username} 編輯,原因:\"{reason}\"", + "redactedByBecause": "由 {username} 編輯,原因:「{reason}」", "@redactedByBecause": { "type": "text", "placeholders": { @@ -1955,9 +1955,9 @@ "@unlockOldMessages": {}, "callingAccountDetails": "允許 FluffyChat 使用原生 Android 撥號應用程式。", "@callingAccountDetails": {}, - "noOtherDevicesFound": "未找到其他設備", + "noOtherDevicesFound": "未找到其他裝置", "@noOtherDevicesFound": {}, - "noUsersFoundWithQuery": "很遺憾,找不到與「 {query} 」相符的使用者。請檢查是否有打錯字。", + "noUsersFoundWithQuery": "很遺憾,找不到與「{query}」相符的使用者。請檢查是否有打錯字。", "@noUsersFoundWithQuery": { "type": "text", "placeholders": { @@ -1982,7 +1982,7 @@ "@experimentalVideoCalls": {}, "youAcceptedTheInvitation": "👍 您接受了邀請", "@youAcceptedTheInvitation": {}, - "storeSecurlyOnThisDevice": "在此設備上安全存儲", + "storeSecurlyOnThisDevice": "在此裝置上安全存儲", "@storeSecurlyOnThisDevice": {}, "countFiles": "{count} 個文件", "@countFiles": { @@ -2001,13 +2001,13 @@ }, "archiveRoomDescription": "聊天室將被移動到存檔中。其他使用者將能看到您已離開聊天室。", "@archiveRoomDescription": {}, - "banUserDescription": "該使用者將被禁止進入聊天室,直到他們被解禁之前都無法再次進入聊天室。", + "banUserDescription": "該使用者將被禁止進入聊天室,直到他們被解封之前都無法再次進入聊天室。", "@banUserDescription": {}, "searchChatsRooms": "搜尋 #chats, @users...", "@searchChatsRooms": {}, "decline": "拒絕", "@decline": {}, - "sendReadReceipts": "發送已讀回條", + "sendReadReceipts": "傳送已讀回條", "@sendReadReceipts": {}, "formattedMessagesDescription": "使用 markdown 顯示豐富的訊息內容,如粗體文字。", "@formattedMessagesDescription": {}, @@ -2040,7 +2040,7 @@ "@enterRoom": {}, "allSpaces": "所有空間", "@allSpaces": {}, - "indexedDbErrorLong": "預設情況下,私密模式不啟用消息存儲。\n請訪問\n - about:config\n - 將 dom.indexedDB.privateBrowsing.enabled 設置為 true\n否則,無法運行 FluffyChat。", + "indexedDbErrorLong": "預設情況下,私密模式不啟用消息存儲。\n請訪問\n - about:config\n - 將 dom.indexedDB.privateBrowsing.enabled 設定為 true\n否則,無法運行 FluffyChat。", "@indexedDbErrorLong": {}, "youKickedAndBanned": "🙅 您踢出並封鎖了 {user}", "@youKickedAndBanned": { @@ -2087,21 +2087,21 @@ "@widgetName": {}, "jump": "跳轉", "@jump": {}, - "commandHint_unignore": "取消忽略已提供的 Matrix ID", + "commandHint_unignore": "取消無視已提供的 Matrix ID", "@commandHint_unignore": {}, - "commandHint_markasgroup": "標記為群組", + "commandHint_markasgroup": "標示為群組", "@commandHint_markasgroup": {}, "commandHint_me": "描述自己", "@commandHint_me": { "type": "text", "description": "Usage hint for the command /me" }, - "commandHint_plain": "發送未格式化的文字", + "commandHint_plain": "傳送未格式化的文字", "@commandHint_plain": { "type": "text", "description": "Usage hint for the command /plain" }, - "commandHint_react": "以反應的形式發送回覆", + "commandHint_react": "以反應的形式傳送回覆", "@commandHint_react": { "type": "text", "description": "Usage hint for the command /react" @@ -2133,7 +2133,7 @@ "@hideInvalidOrUnknownMessageFormats": {}, "dehydrateTorLong": "對 TOR 使用者,建議在關閉窗口前匯出會話。", "@dehydrateTorLong": {}, - "hydrateTor": "TOR 使用者:匯入會話匯出", + "hydrateTor": "TOR 使用者:匯入會話", "@hydrateTor": {}, "messagesStyle": "訊息樣式:", "@messagesStyle": {}, @@ -2250,7 +2250,7 @@ "user": {} } }, - "youInvitedToBy": "📩 您通過網址被邀請至:\n {alias}", + "youInvitedToBy": "📩 您通過網址被邀請至:\n{alias}", "@youInvitedToBy": { "placeholders": { "alias": {} @@ -2287,7 +2287,7 @@ "@invite": {}, "invitePrivateChat": "📨 邀請私人聊天室", "@invitePrivateChat": {}, - "removeDevicesDescription": "您將從這個設備登出,並將不再能夠接收消息。", + "removeDevicesDescription": "您將從這個裝置登出,並將不再能夠接收消息。", "@removeDevicesDescription": {}, "unbanUserDescription": "如果該使用者嘗試,他們將能夠再次進入聊天室。", "@unbanUserDescription": {}, @@ -2324,7 +2324,7 @@ "@select": {}, "files": "文件", "@files": {}, - "forwardMessageTo": "將訊息轉發至 {roomName} ?", + "forwardMessageTo": "將訊息轉發至 {roomName}?", "@forwardMessageTo": { "type": "text", "placeholders": { @@ -2405,7 +2405,7 @@ "@setTheme": {}, "knocking": "敲門", "@knocking": {}, - "sessionLostBody": "您的會話已丟失。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "sessionLostBody": "您的會話已丟失。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", "@sessionLostBody": { "type": "text", "placeholders": { @@ -2504,11 +2504,11 @@ }, "otherCallingPermissions": "麥克風、相機和其他 FluffyChat 權限", "@otherCallingPermissions": {}, - "disableEncryptionWarning": "出於安全原因,您不能在之前已啟用加密的聊天室中停用加密。", + "disableEncryptionWarning": "出於安全原因,您不能在之前已加密的聊天室中停用加密。", "@disableEncryptionWarning": {}, - "deviceKeys": "設備密鑰:", + "deviceKeys": "裝置密鑰:", "@deviceKeys": {}, - "fileIsTooBigForServer": "伺服器報告該文件太大,無法發送。", + "fileIsTooBigForServer": "伺服器報告該文件太大,無法傳送。", "@fileIsTooBigForServer": {}, "fileHasBeenSavedAt": "文件已保存在 {path}", "@fileHasBeenSavedAt": { @@ -2529,7 +2529,7 @@ "@report": {}, "pleaseEnterANumber": "請輸入大於 0 的數字", "@pleaseEnterANumber": {}, - "roomUpgradeDescription": "然後,聊天室將使用新的房間版本重新建立。所有參與者將被通知他們需要切換到新的聊天室。您可以在 https://spec.matrix.org/latest/rooms/ 了解更多關於房間版本的信息。", + "roomUpgradeDescription": "將使用新版本聊天室來重新建立聊天室。所有本聊天室的參與者都會收到通知,他們都需要換到新的聊天室裡。若您想知道有關新版本的更多資訊,請前往 https://spec.matrix.org/latest/rooms/", "@roomUpgradeDescription": {}, "wrongRecoveryKey": "抱歉......這似乎不是正確的恢復密鑰。", "@wrongRecoveryKey": {}, @@ -2561,7 +2561,7 @@ "@incomingMessages": {}, "databaseMigrationTitle": "資料庫已最佳化", "@databaseMigrationTitle": {}, - "restoreSessionBody": "應用程式現在嘗試從備份中恢復您的會話。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "restoreSessionBody": "應用程式現在嘗試從備份中恢復您的會話。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", "@restoreSessionBody": { "type": "text", "placeholders": { @@ -2587,7 +2587,7 @@ "type": "text", "placeholders": {} }, - "inviteContactToGroupQuestion": "您想邀請 {contact} 加入 \"{groupName}\" 聊天室嗎?", + "inviteContactToGroupQuestion": "您想邀請 {contact} 加入 「{groupName}」 聊天室嗎?", "@inviteContactToGroupQuestion": {}, "enableMultiAccounts": "(實驗性功能)在此裝置上啟用多個帳號", "@enableMultiAccounts": {}, @@ -2595,11 +2595,11 @@ "@hideMemberChangesInPublicChats": {}, "recoveryKeyLost": "遺失恢復金鑰?", "@recoveryKeyLost": {}, - "sendAsText": "以文字發送", + "sendAsText": "以文字傳送", "@sendAsText": { "type": "text" }, - "sendSticker": "發送貼圖", + "sendSticker": "傳送貼圖", "@sendSticker": { "type": "text", "placeholders": {} @@ -2615,13 +2615,13 @@ "server": {} } }, - "commandHint_sendraw": "發送原始 json", + "commandHint_sendraw": "傳送原始 json", "@commandHint_sendraw": {}, "newPassword": "新密碼", "@newPassword": {}, "createNewAddress": "建立新地址", "@createNewAddress": {}, - "searchIn": "在聊天室「 {chat} 」中搜尋......", + "searchIn": "在聊天室「{chat}」中搜尋......", "@searchIn": { "type": "text", "placeholders": { @@ -2632,7 +2632,7 @@ "@searchMore": {}, "gallery": "畫廊", "@gallery": {}, - "databaseBuildErrorBody": "無法建立 SQLite 資料庫。應用程式目前嘗試使用遺留資料庫。請將此錯誤報告給開發人員,網址為 {url} 。錯誤訊息為:{error}", + "databaseBuildErrorBody": "無法建立 SQLite 資料庫。應用程式目前嘗試使用遺留資料庫。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", "@databaseBuildErrorBody": { "type": "text", "placeholders": { @@ -2651,7 +2651,7 @@ "type": "text", "space": {} }, - "markAsUnread": "標記為未讀", + "markAsUnread": "標示為未讀", "@markAsUnread": {}, "noDatabaseEncryption": "此平台不支援資料庫加密", "@noDatabaseEncryption": {}, @@ -2659,11 +2659,11 @@ "@messageType": {}, "openGallery": "開啟畫廊", "@openGallery": {}, - "markAsRead": "標記為已讀", + "markAsRead": "標示為已讀", "@markAsRead": {}, "reportUser": "舉報使用者", "@reportUser": {}, - "unsupportedAndroidVersionLong": "此功能需要較新的Android版本。請檢查更新或Lineage OS支持。", + "unsupportedAndroidVersionLong": "此功能需要較新的 Android 版本。請檢查更新或 Lineage OS 支持。", "@unsupportedAndroidVersionLong": {}, "emailOrUsername": "電子郵件或使用者名", "@emailOrUsername": {}, @@ -2675,13 +2675,13 @@ "@usersMustKnock": {}, "knock": "敲門", "@knock": {}, - "storeInSecureStorageDescription": "將恢復密鑰存儲在此設備的安全存儲中。", + "storeInSecureStorageDescription": "將恢復密鑰存儲在此裝置的安全存儲中。", "@storeInSecureStorageDescription": {}, "appearOnTopDetails": "允許應用程式顯示在最上層(如果您已將 Fluffychat 設定為通話帳戶則不需要)", "@appearOnTopDetails": {}, "whyIsThisMessageEncrypted": "為什麼這條訊息無法讀取?", "@whyIsThisMessageEncrypted": {}, - "noKeyForThisMessage": "如果訊息是在您登入此設備之前發送的,就可能會發生這種情況。\n\n也有可能是發送者已經封鎖了您的設備,或者網絡連接出了問題。\n\n如果您能在另一個會話中讀取該訊息,那麼您可以從中轉移訊息!前往設定 > 設備,並確保您的設備已相互驗證。當您下次打開房間且兩個會話都在前景時,密鑰將自動傳輸。\n\n不想在登出或切換設備時丟失密鑰?請確保您已在設定中啟用了聊天室備份。", + "noKeyForThisMessage": "如果訊息是在您登入此裝置之前傳送的,就可能會發生這種情況。\n\n也有可能是傳送者已經封鎖了您的裝置,或者網絡連接出了問題。\n\n如果您能在另一個會話中讀取該訊息,那麼您可以從中轉移訊息!前往設定 > 裝置,並確保您的裝置已相互驗證。當您下次打開房間且兩個會話都在前景時,密鑰將自動傳輸。\n\n不想在登出或切換裝置時丟失密鑰?請確保您已在設定中啟用了聊天室備份。", "@noKeyForThisMessage": {}, "newSpaceDescription": "空間允許您整合您的聊天室並建立私人或公開社群。", "@newSpaceDescription": {}, @@ -2707,7 +2707,7 @@ "sender": {} } }, - "commandHint_ignore": "忽略已提供的 Matrix ID", + "commandHint_ignore": "無視已提供的 Matrix ID", "@commandHint_ignore": {}, "countChatsAndCountParticipants": "{chats} 個聊天室和 {participants} 位參與者", "@countChatsAndCountParticipants": { From df605d6e247f4f78beea460f8540bd8cdd4caac7 Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:18:56 +0000 Subject: [PATCH 049/106] Translated using Weblate (Arabic) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ar/ --- assets/l10n/intl_ar.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_ar.arb b/assets/l10n/intl_ar.arb index 126dd8b5c..6a27bd68d 100644 --- a/assets/l10n/intl_ar.arb +++ b/assets/l10n/intl_ar.arb @@ -2709,7 +2709,7 @@ "@gallery": {}, "swipeRightToLeftToReply": "اسحب من اليمين إلى اليسار للرد", "@swipeRightToLeftToReply": {}, - "alwaysUse24HourFormat": "خاطئ", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From d6a433c050d2c19afbd6e64d65ef1aeae5bb0208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 17 Jul 2024 20:13:38 +0000 Subject: [PATCH 050/106] Translated using Weblate (Estonian) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/ --- assets/l10n/intl_et.arb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/assets/l10n/intl_et.arb b/assets/l10n/intl_et.arb index b53675eda..3d25bdbb9 100644 --- a/assets/l10n/intl_et.arb +++ b/assets/l10n/intl_et.arb @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "vale", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." + }, + "noMoreChatsFound": "Rohkem vestlusi ei leidu...", + "@noMoreChatsFound": {}, + "joinedChats": "Vestlusi, millega oled liitunud", + "@joinedChats": {}, + "unread": "Lugemata", + "@unread": {}, + "space": "Kogukond", + "@space": {}, + "spaces": "Kogukonnad", + "@spaces": {}, + "goToSpace": "Ava kogukond: {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "Märgi mitteloetuks", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} vestlust ja {participants} osalejat", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } } } From 18cf0a69e4784048c375ecef14d0b591bac81aec Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:20:48 +0000 Subject: [PATCH 051/106] Translated using Weblate (Estonian) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/ --- assets/l10n/intl_et.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_et.arb b/assets/l10n/intl_et.arb index 3d25bdbb9..d19c823c3 100644 --- a/assets/l10n/intl_et.arb +++ b/assets/l10n/intl_et.arb @@ -2709,7 +2709,7 @@ "@files": {}, "swipeRightToLeftToReply": "Vastamiseks viipa paremalt vasakule", "@swipeRightToLeftToReply": {}, - "alwaysUse24HourFormat": "vale", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From 45125e0329b495689563e91a9d5cd60f3b6e3fbb Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:18:05 +0000 Subject: [PATCH 052/106] Translated using Weblate (Basque) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eu/ --- assets/l10n/intl_eu.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_eu.arb b/assets/l10n/intl_eu.arb index cefc59b53..cae8a5124 100644 --- a/assets/l10n/intl_eu.arb +++ b/assets/l10n/intl_eu.arb @@ -2709,7 +2709,7 @@ "@knockRestricted": {}, "swipeRightToLeftToReply": "Herrestatu eskuin-ezker erantzuteko", "@swipeRightToLeftToReply": {}, - "alwaysUse24HourFormat": "ez", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From 661b381e0ec2df3b9f2fb1d765cdcfdf36f92ef3 Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:19:11 +0000 Subject: [PATCH 053/106] Translated using Weblate (Turkish) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/tr/ --- assets/l10n/intl_tr.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_tr.arb b/assets/l10n/intl_tr.arb index 0fa7a18f2..c61face7f 100644 --- a/assets/l10n/intl_tr.arb +++ b/assets/l10n/intl_tr.arb @@ -2709,7 +2709,7 @@ "@restricted": {}, "swipeRightToLeftToReply": "Yanıtlamak için sağdan sola kaydır", "@swipeRightToLeftToReply": {}, - "alwaysUse24HourFormat": "yanlış", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From d186c9685657b4915cddb16176e8b55c1efdc05d Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:20:56 +0000 Subject: [PATCH 054/106] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hans/ --- assets/l10n/intl_zh.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh.arb b/assets/l10n/intl_zh.arb index 1e31fdd78..ad8992245 100644 --- a/assets/l10n/intl_zh.arb +++ b/assets/l10n/intl_zh.arb @@ -2709,7 +2709,7 @@ "@restricted": {}, "swipeRightToLeftToReply": "从右向左滑动进行回复", "@swipeRightToLeftToReply": {}, - "alwaysUse24HourFormat": "否", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From 1a7860fa171f70c172bbbd2e2e70ed7773756805 Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:21:02 +0000 Subject: [PATCH 055/106] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index f7837bd4e..164003394 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -1860,7 +1860,7 @@ "@block": {}, "discover": "發現", "@discover": {}, - "alwaysUse24HourFormat": "否", + "alwaysUse24HourFormat": "false", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, From 182f39b6b89acb867e30f69daaea328a4dfda54d Mon Sep 17 00:00:00 2001 From: kdh8219 Date: Thu, 18 Jul 2024 13:18:19 +0000 Subject: [PATCH 056/106] Translated using Weblate (Korean) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ko/ --- assets/l10n/intl_ko.arb | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_ko.arb b/assets/l10n/intl_ko.arb index 0e049112e..ce17351d6 100644 --- a/assets/l10n/intl_ko.arb +++ b/assets/l10n/intl_ko.arb @@ -2707,5 +2707,34 @@ "knockRestricted": "스페이스 멤버만 참가 요청 가능", "@knockRestricted": {}, "swipeRightToLeftToReply": "오른쪽에서 왼쪽으로 스와이프해서 답장", - "@swipeRightToLeftToReply": {} + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "unread": "읽지 않은", + "@unread": {}, + "space": "스페이스", + "@space": {}, + "spaces": "스페이스", + "@spaces": {}, + "goToSpace": "스페이스로: {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "읽지 않음으로 표시", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} 채팅과 {participants} 참여자", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "joinedChats": "참여한 채팅", + "@joinedChats": {}, + "noMoreChatsFound": "채팅을 찾을 수 없습니다...", + "@noMoreChatsFound": {} } From a8d6c7ecfe735b5a3575f1bd2eb891a1d9e99eb0 Mon Sep 17 00:00:00 2001 From: Pixelcode Date: Sat, 20 Jul 2024 10:05:11 +0000 Subject: [PATCH 057/106] Translated using Weblate (German) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/ --- assets/l10n/intl_de.arb | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/assets/l10n/intl_de.arb b/assets/l10n/intl_de.arb index 9e8d2fc67..54aa417b3 100644 --- a/assets/l10n/intl_de.arb +++ b/assets/l10n/intl_de.arb @@ -360,7 +360,7 @@ "type": "text", "description": "Usage hint for the command /invite" }, - "commandHint_join": "Betrete den ausgewählten Raum", + "commandHint_join": "Betritt den ausgewählten Raum", "@commandHint_join": { "type": "text", "description": "Usage hint for the command /join" @@ -1084,7 +1084,7 @@ "type": "text", "placeholders": {} }, - "noGoogleServicesWarning": "Firebase Cloud Messaging scheint auf deinem Gerät nicht verfügbar zu sein. Um trotzdem Push-Benachrichtigungen zu erhalten, empfehlen wir die Installation von ntfy. Mit ntfy oder einem anderen Unified Push Anbieter kannst du Push-Benachrichtigungen datensicher empfangen. Du kannst ntfy im PlayStore oder bei F-Droid herunterladen.", + "noGoogleServicesWarning": "Firebase Cloud Messaging scheint auf deinem Gerät nicht verfügbar zu sein. Um trotzdem Push-Benachrichtigungen zu erhalten, empfehlen wir die Installation von ntfy. Mit ntfy oder einem anderen Unified-Push-Anbieter kannst du Push-Benachrichtigungen datensicher empfangen. Du kannst ntfy im PlayStore oder bei F-Droid herunterladen.", "@noGoogleServicesWarning": { "type": "text", "placeholders": {} @@ -1667,7 +1667,7 @@ "type": "text", "placeholders": {} }, - "tryToSendAgain": "Nochmal versuchen zu senden", + "tryToSendAgain": "Noch mal versuchen zu senden", "@tryToSendAgain": { "type": "text", "placeholders": {} @@ -1965,7 +1965,7 @@ "@start": {}, "repeatPassword": "Passwort wiederholen", "@repeatPassword": {}, - "commandHint_dm": "Starte einen direkten Chat\nBenutze --no-encryption um die Verschlüsselung auszuschalten", + "commandHint_dm": "Starte einen direkten Chat\nBenutze --no-encryption, um die Verschlüsselung auszuschalten", "@commandHint_dm": { "type": "text", "description": "Usage hint for the command /dm" @@ -1980,7 +1980,7 @@ "type": "text", "description": "Usage hint for the command /clearcache" }, - "commandHint_create": "Erstelle ein leeren Gruppenchat\nBenutze --no-encryption um die Verschlüsselung auszuschalten", + "commandHint_create": "Erstelle ein leeren Gruppenchat\nBenutze --no-encryption, um die Verschlüsselung auszuschalten", "@commandHint_create": { "type": "text", "description": "Usage hint for the command /create" @@ -2013,7 +2013,7 @@ "@videoCallsBetaWarning": {}, "emailOrUsername": "E-Mail oder Benutzername", "@emailOrUsername": {}, - "unsupportedAndroidVersionLong": "Diese Funktion erfordert eine neuere Android-Version. Bitte suche nach Updates oder Lineage OS-Unterstützung.", + "unsupportedAndroidVersionLong": "Diese Funktion erfordert eine neuere Android-Version. Bitte suche nach Updates oder prüfe die Lineage-OS-Unterstützung.", "@unsupportedAndroidVersionLong": {}, "experimentalVideoCalls": "Experimentelle Videoanrufe", "@experimentalVideoCalls": {}, @@ -2151,7 +2151,7 @@ "@saveKeyManuallyDescription": {}, "hydrateTorLong": "Hast du deine Sitzung das letzte Mal auf TOR exportiert? Importiere sie schnell und chatte weiter.", "@hydrateTorLong": {}, - "pleaseEnterRecoveryKey": "Bitte gebe deinen Wiederherstellungsschlüssel ein:", + "pleaseEnterRecoveryKey": "Bitte gib deinen Wiederherstellungsschlüssel ein:", "@pleaseEnterRecoveryKey": {}, "countFiles": "{count} Dateien", "@countFiles": { @@ -2265,7 +2265,7 @@ "senderName": {} } }, - "commandHint_googly": "Googly Eyes senden", + "commandHint_googly": "Glupschaugen senden", "@commandHint_googly": {}, "disableEncryptionWarning": "Aus Sicherheitsgründen können Sie die Verschlüsselung in einem Chat nicht deaktivieren, wo sie zuvor aktiviert wurde.", "@disableEncryptionWarning": {}, @@ -2273,7 +2273,7 @@ "@reopenChat": {}, "fileIsTooBigForServer": "Der Server meldet, dass die Datei zu groß ist für eine Übermittlung ist.", "@fileIsTooBigForServer": {}, - "noBackupWarning": "Achtung! Ohne Aktivierung des Chat-Backups verlierst du den Zugriff auf deine verschlüsselten Nachrichten. Vor dem Ausloggen wird dringend empfohlen den Chat-Backup zu aktivieren.", + "noBackupWarning": "Achtung! Ohne Aktivierung des Chat-Backups verlierst du den Zugriff auf deine verschlüsselten Nachrichten. Vor dem Ausloggen wird dringend empfohlen, das Chat-Backup zu aktivieren.", "@noBackupWarning": {}, "noOtherDevicesFound": "Keine anderen Geräte anwesend", "@noOtherDevicesFound": {}, @@ -2589,7 +2589,7 @@ "sender": {} } }, - "verifyOtherDeviceDescription": "Wenn Sie ein anderes Gerät verifizieren, können diese Geräteschlüssel austauschen, was Ihre Sicherheit insgesamt erhöht. 💪 Wenn Sie eine Verifizierung starten, erscheint ein Pop-up in der App auf beiden Geräten. Dort sehen Sie dann eine Reihe von Emojis oder Zahlen, die Sie miteinander vergleichen müssen. Am besten hältst du beide Geräte bereit, bevor du die Verifizierung startest. 🤳", + "verifyOtherDeviceDescription": "Wenn Sie ein anderes Gerät verifizieren, können diese Geräteschlüssel austauschen, was Ihre Sicherheit insgesamt erhöht. 💪 Wenn Sie eine Verifizierung starten, erscheint ein Pop-up in der App auf beiden Geräten. Dort sehen Sie dann eine Reihe von Emojis oder Zahlen, die Sie miteinander vergleichen müssen. Am besten halten Sie beide Geräte bereit, bevor Sie die Verifizierung starten. 🤳", "@verifyOtherDeviceDescription": {}, "presenceStyle": "Statusmeldungen:", "@presenceStyle": { @@ -2727,5 +2727,15 @@ "space": {} }, "markAsUnread": "Als ungelesen markieren", - "@markAsUnread": {} + "@markAsUnread": {}, + "swipeRightToLeftToReply": "Wische von rechts nach links zum Antworten", + "@swipeRightToLeftToReply": {}, + "countChatsAndCountParticipants": "{chats} Chats und {participants} Teilnehmer", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + } } From 18198d41c25e15fcfd5f74604e00701ef11d58f6 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Mon, 22 Jul 2024 08:57:58 +0000 Subject: [PATCH 058/106] Translated using Weblate (Basque) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eu/ --- assets/l10n/intl_eu.arb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/assets/l10n/intl_eu.arb b/assets/l10n/intl_eu.arb index cae8a5124..6f72715e2 100644 --- a/assets/l10n/intl_eu.arb +++ b/assets/l10n/intl_eu.arb @@ -23,7 +23,7 @@ "type": "text", "placeholders": {} }, - "activatedEndToEndEncryption": "🔐 {username}(e)k ertzetik ertzerako zifraketa gaitu du", + "activatedEndToEndEncryption": "🔐 {username}(e)k ertzetik ertzerako zifratzea gaitu du", "@activatedEndToEndEncryption": { "type": "text", "placeholders": { @@ -226,7 +226,7 @@ "type": "text", "placeholders": {} }, - "channelCorruptedDecryptError": "Zifraketa hondatu egin da", + "channelCorruptedDecryptError": "Zifratzea hondatu egin da", "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} @@ -412,17 +412,17 @@ "type": "text", "placeholders": {} }, - "enableEncryptionWarning": "Ezingo duzu zifraketa ezgaitu. Ziur zaude?", + "enableEncryptionWarning": "Ezingo duzu zifratzea ezgaitu. Ziur zaude?", "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "encryption": "Zifraketa", + "encryption": "Zifratzea", "@encryption": { "type": "text", "placeholders": {} }, - "encryptionNotEnabled": "Zifraketa ez dago gaituta", + "encryptionNotEnabled": "Zifratzea ez dago gaituta", "@encryptionNotEnabled": { "type": "text", "placeholders": {} @@ -666,7 +666,7 @@ "type": "text", "placeholders": {} }, - "needPantalaimonWarning": "Kontuan izan oraingoz Pantalaimon behar duzula puntuz puntuko zifraketarako.", + "needPantalaimonWarning": "Kontuan izan oraingoz Pantalaimon behar duzula ertzetik ertzerako zifratzerako.", "@needPantalaimonWarning": { "type": "text", "placeholders": {} @@ -1036,7 +1036,7 @@ "type": "text", "placeholders": {} }, - "unknownEncryptionAlgorithm": "Zifraketa-algoritmo ezezaguna", + "unknownEncryptionAlgorithm": "Zifratze-algoritmo ezezaguna", "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} @@ -1649,7 +1649,7 @@ "type": "text", "placeholders": {} }, - "enableEncryption": "Gaitu zifraketa", + "enableEncryption": "Gaitu zifratzea", "@enableEncryption": { "type": "text", "placeholders": {} @@ -1841,7 +1841,7 @@ "type": "text", "placeholders": {} }, - "noEncryptionForPublicRooms": "Zifraketa aktiba dezakezu soilik gelak publikoa izateari utzi badio.", + "noEncryptionForPublicRooms": "Zifratzea aktiba dezakezu soilik gelak publikoa izateari utzi badio.", "@noEncryptionForPublicRooms": { "type": "text", "placeholders": {} @@ -2238,7 +2238,7 @@ "@startFirstChat": {}, "newSpaceDescription": "Guneek txatak taldekatzea ahalbidetzen dute eta komunitate pribatu edo publikoak osatzea.", "@newSpaceDescription": {}, - "disableEncryptionWarning": "Segurtasun arrazoiak direla-eta, ezin duzu lehendik zifratuta zegoen txat bateko zifraketa ezgaitu.", + "disableEncryptionWarning": "Segurtasun arrazoiak direla-eta, ezin duzu lehendik zifratuta zegoen txat bateko zifratzea ezgaitu.", "@disableEncryptionWarning": {}, "encryptThisChat": "Zifratu txata", "@encryptThisChat": {}, @@ -2520,7 +2520,7 @@ }, "transparent": "Gardena", "@transparent": {}, - "sendReadReceipts": "Bidali irakurri izanaren adierazlea", + "sendReadReceipts": "Bidali irakurri izanaren agiria", "@sendReadReceipts": {}, "formattedMessages": "Formatua duten mezuak", "@formattedMessages": {}, From e9141d5753f70cacdfce1ebecfaf23486ff9675f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Wed, 24 Jul 2024 04:49:49 +0000 Subject: [PATCH 059/106] Translated using Weblate (Galician) Currently translated at 100.0% (642 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/gl/ --- assets/l10n/intl_gl.arb | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_gl.arb b/assets/l10n/intl_gl.arb index 8a7ef7922..eefbbeaf9 100644 --- a/assets/l10n/intl_gl.arb +++ b/assets/l10n/intl_gl.arb @@ -2712,5 +2712,30 @@ "alwaysUse24HourFormat": "falso", "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." - } + }, + "noMoreChatsFound": "Non se atopan máis chats…", + "@noMoreChatsFound": {}, + "joinedChats": "Chats nos que participas", + "@joinedChats": {}, + "countChatsAndCountParticipants": "{chats} chats e {participants} participantes", + "@countChatsAndCountParticipants": { + "type": "text", + "placeholders": { + "chats": {}, + "participants": {} + } + }, + "unread": "Sen ler", + "@unread": {}, + "space": "Espazo", + "@space": {}, + "spaces": "Espazos", + "@spaces": {}, + "goToSpace": "Ir ao espazo: {space}", + "@goToSpace": { + "type": "text", + "space": {} + }, + "markAsUnread": "Marcar como non lido", + "@markAsUnread": {} } From 22ff4bd25a1630ee66909535fb18deeccfa359ba Mon Sep 17 00:00:00 2001 From: Guacamolie Date: Wed, 24 Jul 2024 09:32:00 +0000 Subject: [PATCH 060/106] Translated using Weblate (Dutch) Currently translated at 83.4% (536 of 642 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/ --- assets/l10n/intl_nl.arb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_nl.arb b/assets/l10n/intl_nl.arb index 67d79c2b5..8453e47db 100644 --- a/assets/l10n/intl_nl.arb +++ b/assets/l10n/intl_nl.arb @@ -2417,5 +2417,9 @@ "pleaseEnterANumber": "Vul een getal in groter dan 0", "@pleaseEnterANumber": {}, "kickUserDescription": "De persoon is verwijderd uit de chat, maar is niet verbannen. In publieke chats kan de persoon op elk moment opnieuw deelnemen.", - "@kickUserDescription": {} + "@kickUserDescription": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + } } From 563f2fac82e8ce8bc1b245058714afffef58d3a3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:38 +0000 Subject: [PATCH 061/106] Translated using Weblate (Czech) Currently translated at 78.6% (513 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/cs/ --- assets/l10n/intl_cs.arb | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/assets/l10n/intl_cs.arb b/assets/l10n/intl_cs.arb index c6a4820c4..34549bee4 100644 --- a/assets/l10n/intl_cs.arb +++ b/assets/l10n/intl_cs.arb @@ -2349,48 +2349,11 @@ "count": {} } }, - "@reportErrorDescription": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@unbanUserDescription": {}, - "@pushNotificationsNotAvailable": {}, - "@makeAdminDescription": {}, - "@archiveRoomDescription": {}, - "@invalidInput": {}, - "@report": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@inviteGroupChat": {}, - "@invitePrivateChat": {}, - "@learnMore": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, "emoteKeyboardNoRecents": "Naposledy použité emoce se zobrazí zde...", "@emoteKeyboardNoRecents": { "type": "text", "placeholders": {} }, - "@kickUserDescription": {}, - "@invite": {}, - "@indexedDbErrorLong": {}, - "@callingAccount": {}, - "@enterSpace": {}, - "@noKeyForThisMessage": {}, - "@readUpToHere": {}, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@hideUnimportantStateEvents": {}, - "@noBackupWarning": {}, - "@indexedDbErrorTitle": {}, "appLockDescription": "Zamknout aplikaci pomocí PIN kódu když není používána", "@appLockDescription": {}, "globalChatId": "Globální ID chatu", From 8079f65755ed71d8cf1dd5fc1d6e09fa7b534ac3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:39 +0000 Subject: [PATCH 062/106] Translated using Weblate (Spanish) Currently translated at 74.5% (486 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/es/ --- assets/l10n/intl_es.arb | 4695 +++++++++++++++++++-------------------- 1 file changed, 2317 insertions(+), 2378 deletions(-) diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index 88e9649c9..f11a7a5e7 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -1,2380 +1,2319 @@ { - "@@locale": "es", - "@@last_modified": "2021-08-14 12:41:10.097243", - "about": "Acerca de", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Aceptar", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} aceptó la invitación", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Cuenta", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} activó el cifrado de extremo a extremo", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Añadir dirección de correo", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "admin": "Administrador", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "alias", - "@alias": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} respondió a la llamada", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Cualquiera puede unirse", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "archive": "Archivo", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "¿Pueden unirse los usuarios visitantes?", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "¿Estás seguro?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "¿Confirma que quiere cerrar sesión?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Para poder confirmar a la otra persona, ingrese su contraseña de almacenamiento segura o la clave de recuperación.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "¿Aceptar esta solicitud de verificación de {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerLoginTypesException": "El servidor soporta los siguientes mecanismos para autenticación:\n{serverVersions}\npero esta aplicación sólo soporta:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "El servidor soporta las siguientes versiones de la especificación:\n{serverVersions}\npero esta aplicación sólo soporta las versiones {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "Vetar del chat", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Vetado", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} vetó a {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Bloquear dispositivo", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Bloqueado", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "cancel": "Cancelar", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "changeDeviceName": "Cambiar el nombre del dispositivo", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} cambió el icono del chat", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} cambió la descripción del chat a: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} cambió el nombre del chat a: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username} cambió los permisos del chat", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} cambió su nombre visible a: {displayname}", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} cambió las reglas de acceso de visitantes", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} cambió las reglas de acceso de visitantes a: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "{username} cambió la visibilidad del historial", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} cambió la visibilidad del historial a: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} cambió las reglas de ingreso", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} cambió las reglas de ingreso a {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} cambió su imagen de perfil", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} cambió el alias de la sala", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} cambió el enlace de invitación", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Cambiar la contraseña", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Cambiar el servidor", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Cambia tu estilo", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Cambiar el nombre del grupo", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "El cifrado se ha corrompido", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "Chat", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Copia de respaldo del chat", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "La copia de respaldo del chat está protegida por una clave de seguridad. Procure no perderla.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Detalles del chat", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chats": "Conversaciones", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Elija una contraseña segura", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Borrar archivo", - "@clearArchive": {}, - "close": "Cerrar", - "@close": { - "type": "text", - "placeholders": {} - }, - "compareEmojiMatch": "Por favor compare los emojis", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Por favor compare los números", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "confirm": "Confirmar", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "Conectar", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "El contacto ha sido invitado al grupo", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Copiado al portapapeles", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Copiar", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Copiar al portapapeles", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "No se pudo descifrar el mensaje: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} participantes", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Crear", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "💬{username} creó el chat", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "currentlyActive": "Actualmente activo", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Oscuro", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{day}-{month}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{day}-{month}-{year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "Se desactivará su cuenta de usuario. ¡La operación no se puede cancelar! ¿Está seguro?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "delete": "Eliminar", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Cancelar cuenta", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Eliminar mensaje", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Dispositivo", - "@device": { - "type": "text", - "placeholders": {} - }, - "devices": "Dispositivos", - "@devices": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "El nombre visible ha cambiado", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Descargar archivo", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Editar nombre visible", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Editar alias de la sala", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "¡El emote ya existe!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "¡El atajo del emote es inválido!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Paquetes de emoticonos para la habitación", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Configuración de emotes", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Atajo de emote", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "¡Debes elegir un atajo de emote y una imagen!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Chat vacío", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Habilitar paquete de emoticonos a nivel general", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encryption": "Cifrado", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "El cifrado no está habilitado", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} terminó la llamada", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "Introducir una dirección de correo electrónico", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "Ingrese su servidor", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "¡Todo listo!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "fileName": "Nombre del archivo", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "forward": "Reenviar", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "Desde que se unió", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "Desde la invitación", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "group": "Grupo", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "El grupo es público", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Grupo con {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "Los visitantes están prohibidos", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Los visitantes pueden unirse", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} ha retirado la invitación para {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Ayuda", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Ocultar sucesos censurados", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Ocultar sucesos desconocidos", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "id": "Identificación", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "Identidad", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Usuarios ignorados", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Frase de contraseña o clave de recuperación incorrecta", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Invitar contacto", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Invitar contacto a {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "Invitado", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "📩{username} invitó a {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "Sólo usuarios invitados", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} te invitó a FluffyChat.\n1. Instale FluffyChat: https://fluffychat.im\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "está escribiendo…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "👋{username} se unió al chat", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "Unirse a la sala", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "👞{username} echó a {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "🙅{username} echó y vetó a {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "Echar del chat", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Última vez activo: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Abandonar", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "Abandonó el chat", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Licencia", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Claro", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Mostrar {count} participantes más", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "Cargando… Por favor espere.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Mostrar más…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "login": "Acceso", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Iniciar sesión en {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "Cerrar sesión", - "@logout": { - "type": "text", - "placeholders": {} - }, - "mention": "Mencionar", - "@mention": { - "type": "text", - "placeholders": {} - }, - "moderator": "Moderador", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Silenciar chat", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "Nuevo mensaje en FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "¡Nueva solicitud de verificación!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Siguiente", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "No", - "@no": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Ningún emote encontrado. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Sólo se puede activar el cifrado en cuanto la sala deja de ser de acceso público.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "none": "Ninguno", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Sin autorización", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Ninguna sala encontrada…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "offline": "Desconectado", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "Ok", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "Conectado", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "La copia de seguridad de la clave en línea está habilitada", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Ups, algo salió mal…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Abrir la aplicación para leer los mensajes", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Abrir cámara", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "contraseña o clave de recuperación", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Contraseña", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "La contraseña ha sido cambiada", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "people": "Personas", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Elegir imagen", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Pin", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "Reproducir {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseClickOnLink": "Haga clic en el enlace del correo electrónico y luego continúe.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Por favor ingrese su contraseña", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Por favor ingrese su nombre de usuario", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Por favor, siga las instrucciones del sitio web y presione \"siguiente\".", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Privacidad", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Salas públicas", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "recording": "Grabando", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} censuró un suceso", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "reject": "Rechazar", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} rechazó la invitación", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "Volver a unirse", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Eliminar", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Eliminar todos los otros dispositivos", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Eliminado por {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Eliminar dispositivo", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Eliminar la expulsión", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Mostrar el contenido con mensajes enriquecidos", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "reply": "Responder", - "@reply": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Solicitar permiso", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "La sala ha subido de categoría", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Versión de sala", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Visto por {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "send": "Enviar", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Enviar un mensaje", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Enviar audio", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Enviar un archivo", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Enviar una imagen", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Enviar el original", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Enviar video", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "{username} envió un archivo", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "{username} envió un audio", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "{username} envió una imagen", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "{username} envió un sticker", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "{username} envió un video", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName} envió información de la llamada", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setAsCanonicalAlias": "Fijar alias principal", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Establecer enlace de invitación", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Establecer estado", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "Ajustes", - "@settings": { - "type": "text", - "placeholders": {} - }, - "share": "Compartir", - "@share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} compartió la ubicación", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "showPassword": "Mostrar contraseña", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "skip": "Omitir", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Código fuente", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName} comenzó una llamada", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "statusExampleMessage": "¿Cómo estás hoy?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "Enviar", - "@submit": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "Sistema", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "No coinciden", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Coinciden", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Transferir desde otro dispositivo", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Intentar enviar nuevamente", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Indisponible", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} admitió a {targetName} nuevamente", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unblockDevice": "Desbloquear dispositivo", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Dispositivo desconocido", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Algoritmo de cifrado desconocido", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Evento desconocido '{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "unmuteChat": "Dejar de silenciar el chat", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Despinchar", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{1 chat no leído} other{{unreadCount} chats no leídos}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "userAndOthersAreTyping": "{username} y {count} más están escribiendo…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username} y {username2} están escribiendo…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username} está escribiendo…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userLeftTheChat": "{username} abandonó el chat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "username": "Nombre de usuario", - "@username": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "{username} envió un evento {type}", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "verified": "Verificado", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verify": "Verificar", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Comenzar verificación", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "¡Has verificado exitosamente!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Verificando la otra cuenta", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Video llamada", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Visibilidad del historial del chat", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Visible para todos los participantes", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Visible para todo el mundo", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Mensaje de voz", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Esperando a que el socio acepte la solicitud…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Esperando a que el socio acepte los emojis…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Esperando a que el socio acepte los números…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Fondo de pantalla:", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "¡Advertencia!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Te enviamos un correo electrónico", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Quién tiene permitido unirse al grupo", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Escribe un mensaje…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "Sí", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "Tú", - "@you": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Ya no estás participando en este chat", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Has sido vetado de este chat", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "autoplayImages": "Reproducir emoticonos y stickers animados automáticamente", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "allChats": "Todos los chats", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Agregar al espacio", - "@addToSpace": {}, - "cantOpenUri": "No puedo abrir el URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "all": "Todo", - "@all": { - "type": "text", - "placeholders": {} - }, - "appLock": "Bloqueo de aplicación", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Mensajes de bot", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "oneClientLoggedOut": "Se ha cerrado en la sesión de uno de sus clientes", - "@oneClientLoggedOut": {}, - "addAccount": "Añadir cuenta", - "@addAccount": {}, - "editBundlesForAccount": "Editar paquetes para esta cuenta", - "@editBundlesForAccount": {}, - "addToBundle": "Agregar al paquete", - "@addToBundle": {}, - "bundleName": "Nombre del paquete", - "@bundleName": {}, - "saveFile": "Guardar el archivo", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Enviar stickers", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Establecer nivel de permisos", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "shareLocation": "Compartir ubicación", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Inicio de sesión único", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "status": "Estado", - "@status": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "Sincronizando... por favor espere.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "He hecho clic en el enlace", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "directChats": "Chat directo", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "Error al obtener la ubicación: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "howOffensiveIsThisContent": "¿Cuán ofensivo es este contenido?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Invitar por mí", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Aún no ha agregado una forma de recuperar su contraseña.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count} usuarios están escribiendo…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "or": "O", - "@or": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "El espacio es público", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "El chat se ha agregado a este espacio", - "@chatHasBeenAddedToThisSpace": {}, - "commandInvalid": "Comando inválido", - "@commandInvalid": { - "type": "text" - }, - "passwordRecovery": "Recuperación de contraseña", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "security": "Seguridad", - "@security": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Extremadamente ofensivo", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Editar servidores bloqueado", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Configurar chat", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Sin conexión al servidor", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Tu clave pública", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Contraseña olvidada", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Inofensivo", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "reason": "Razón", - "@reason": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Cambios de miembros", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "createNewSpace": "Nuevo espacio", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "edit": "Editar", - "@edit": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "Establecer emoticonos personalizados", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "ignore": "Ignorar", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "notifications": "Notificaciones", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Notificaciones habilitadas para esta cuenta", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "offensive": "Ofensiva", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "serverRequiresEmail": "Este servidor necesita validar su dirección de correo electrónico para registrarse.", - "@serverRequiresEmail": {}, - "pleaseChoose": "Por favor elija", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Reemplazar habitación con una versión más nueva", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "El contenido ha sido reportado a los administradores del servidor", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "groups": "Grupos", - "@groups": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Mensaje de informe", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "search": "Buscar", - "@search": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "Permiso de ubicación denegado. Concédeles que puedan compartir tu ubicación.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Nivel de permiso predeterminado", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "obtainingLocation": "Obteniendo ubicación…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "participant": "Participante", - "@participant": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Regla de Push", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "register": "Registrarse", - "@register": { - "type": "text", - "placeholders": {} - }, - "sendAsText": "Enviar como texto", - "@sendAsText": { - "type": "text" - }, - "toggleMuted": "Alternar silenciado", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Demasiadas solicitudes. ¡Por favor inténtelo más tarde!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Con esta dirección puede recuperar su contraseña.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "commandHint_send": "Enviar texto", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "deviceId": "ID del dispositivo", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Contiene nombre de usuario", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "¡UPS¡ Desafortunadamente, se produjo un error al configurar las notificaciones push.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Quitar tu avatar", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Habilitar la encriptación", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "messages": "Mensajes", - "@messages": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Tamaño de fuente", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Prohibir al usuario dado en esta sala", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_unban": "Des banear al usuario dado en esta sala", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandMissing": "{command} no es un comando.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "scanQrCode": "Escanear código QR", - "@scanQrCode": {}, - "homeserver": "Homeserver", - "@homeserver": {}, - "newChat": "Nuevo chat", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "commandHint_join": "Únete a la sala indicada", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "sendOnEnter": "Enviar con enter", - "@sendOnEnter": {}, - "changeYourAvatar": "Cambiar tu avatar", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "commandHint_me": "Descríbete", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_html": "Enviar texto con formato HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Invitar al usuario indicado a esta sala", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_kick": "Eliminar el usuario indicado de esta sala", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Deja esta sala", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_myroomavatar": "Selecciona tu foto para esta sala (by mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "Establece tu nombre para mostrar para esta sala", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Establece el nivel de potencia del usuario dado (default: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Enviar texto sin formato", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Enviar respuesta como reacción", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "containsDisplayName": "Contiene nombre para mostrar", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Editar avatar de sala", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "locationDisabledNotice": "Los servicios de ubicación están deshabilitado. Habilite para poder compartir su ubicación.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Encriptado", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Ir a la nueva sala", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} no es un servidor matrix, usar {server2} en su lugar?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "openInMaps": "Abrir en maps", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "removeFromBundle": "Quitar de este paquete", - "@removeFromBundle": {}, - "link": "Link", - "@link": {}, - "enableMultiAccounts": "(BETA) habilite varias cuenta en este dispositivo", - "@enableMultiAccounts": {}, - "pleaseEnter4Digits": "Ingrese 4 dígitos o déjelo en blanco para deshabilitar el bloqueo de la aplicación.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Elija un código de acceso", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Por favor ingrese su PIN", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "redactMessage": "Censurar mensaje", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Enviar mensajes", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Nombre del espacio", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Alternar favorito", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Marcar como: leído / no leído", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Quién puede realizar qué acción", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "¿Por qué quieres denunciar esto?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "¿Limpiar la copia de seguridad de su chat para crear una nueva clave de seguridad?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "yourChatBackupHasBeenSetUp": "Se ha configurado la copia de respaldo del chat.", - "@yourChatBackupHasBeenSetUp": {}, - "unverified": "No verificado", - "@unverified": {}, - "commandHint_clearcache": "Limpiar cache", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "messageInfo": "Información del mensaje", - "@messageInfo": {}, - "time": "Tiempo", - "@time": {}, - "openVideoCamera": "Abrir la cámara para un video", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "repeatPassword": "Repita la contraseña", - "@repeatPassword": {}, - "removeFromSpace": "Eliminar del espacio", - "@removeFromSpace": {}, - "addToSpaceDescription": "Elige un espacio para añadir este chat a el.", - "@addToSpaceDescription": {}, - "openGallery": "Abrir galería", - "@openGallery": {}, - "start": "Iniciar", - "@start": {}, - "commandHint_discardsession": "Descartar sesión", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "messageType": "Tipo de Mensaje", - "@messageType": {}, - "videoWithSize": "Video ({size})", - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "publish": "Publicar", - "@publish": {}, - "newSpace": "Nuevo espacio", - "@newSpace": {}, - "allSpaces": "Todos los espacios", - "@allSpaces": {}, - "widgetUrlError": "Esta no es una URL válida.", - "@widgetUrlError": {}, - "commandHint_markasgroup": "Marcar como grupo", - "@commandHint_markasgroup": {}, - "nextAccount": "Siguiente cuenta", - "@nextAccount": {}, - "youRejectedTheInvitation": "Rechazaste la invitación", - "@youRejectedTheInvitation": {}, - "newGroup": "Nuevo grupo", - "@newGroup": {}, - "widgetJitsi": "Jitsi Meet", - "@widgetJitsi": {}, - "previousAccount": "Cuenta anterior", - "@previousAccount": {}, - "users": "Usuarios", - "@users": {}, - "youInvitedBy": "📩 Has sido invitado por {user}", - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "youAcceptedTheInvitation": "👍 Aceptaste la invitación", - "@youAcceptedTheInvitation": {}, - "widgetEtherpad": "Nota de texto", - "@widgetEtherpad": {}, - "commandHint_cuddle": "Mandar una carantoña", - "@commandHint_cuddle": {}, - "supposedMxid": "Esto debería ser {mxid}", - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "importFromZipFile": "Importar de un archivo .zip", - "@importFromZipFile": {}, - "exportEmotePack": "Exportar paquete de emotes como .zip", - "@exportEmotePack": {}, - "addChatDescription": "Añadir una descripción del chat", - "@addChatDescription": {}, - "sendTypingNotifications": "Enviar notificaciones \"está escribiendo\"", - "@sendTypingNotifications": {}, - "importEmojis": "Importar emojis", - "@importEmojis": {}, - "confirmMatrixId": "Por favor confirma tu Matrix ID para borrar tu cuenta.", - "@confirmMatrixId": {}, - "notAnImage": "El archivo no es una imagen.", - "@notAnImage": {}, - "commandHint_hug": "Mandar un abrazo", - "@commandHint_hug": {}, - "importNow": "Importar ahora", - "@importNow": {}, - "hugContent": "{senderName} te abraza", - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "otherCallingPermissions": "Micrófono, cámara y otros permisos de FluffyChat", - "@otherCallingPermissions": {}, - "emailOrUsername": "Correo electrónico o nombre de usuario", - "@emailOrUsername": {}, - "countFiles": "{count} archivos", - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "reportUser": "Reportar usuario", - "@reportUser": {}, - "voiceCall": "Llamada de voz", - "@voiceCall": {}, - "reactedWith": "{sender} reaccionó con {reaction}", - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "markAsRead": "Marcar como leído", - "@markAsRead": {}, - "widgetName": "Nombre", - "@widgetName": {}, - "replace": "Reemplazar", - "@replace": {}, - "unsupportedAndroidVersionLong": "Esta característica requiere una versión más reciente de Android. Por favor, compruebe las actualizaciones o la compatibilidad de LineageOS.", - "@unsupportedAndroidVersionLong": {}, - "storeSecurlyOnThisDevice": "Almacenar de forma segura en este dispositivo", - "@storeSecurlyOnThisDevice": {}, - "@encryptThisChat": {}, - "openChat": "Abrir chat", - "@openChat": {}, - "screenSharingDetail": "Usted está compartiendo su pantalla en FluffyChat", - "@screenSharingDetail": {}, - "@jumpToLastReadMessage": {}, - "allRooms": "Todos los chats grupales", - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "widgetVideo": "Vídeo", - "@widgetVideo": {}, - "dismiss": "Descartar", - "@dismiss": {}, - "@reportErrorDescription": {}, - "unsupportedAndroidVersion": "Versión de Android no compatible", - "@unsupportedAndroidVersion": {}, - "indexedDbErrorLong": "El almacenamiento de mensajes, por desgracia, no está habilitado en el modo privado por defecto.\nPor favor, visite\n - about:config\n - Establezca dom.indexedDB.privateBrowsing.enabled a true\nDe otra forma, no es posible usar FluffyChat.", - "@indexedDbErrorLong": {}, - "startFirstChat": "Comience su primer chat", - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "commandHint_create": "Crear un chat grupal vacío\nUse --no-encryption para deshabilitar el cifrado", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "user": "Usuario", - "@user": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "separateChatTypes": "Separar chats directos de grupos", - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "tryAgain": "Inténtelo de nuevo", - "@tryAgain": {}, - "youKickedAndBanned": "🙅 Usted expulsó y prohibió el acceso a {user}", - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "messagesStyle": "Mensajes:", - "@messagesStyle": {}, - "@newSpaceDescription": {}, - "chatDescription": "Descripción del chat", - "@chatDescription": {}, - "callingAccountDetails": "Permite a FluffyChat utilizar la aplicación de llamadas nativa de Android.", - "@callingAccountDetails": {}, - "enterSpace": "Unirse al espacio", - "@enterSpace": {}, - "@reopenChat": {}, - "pleaseEnterRecoveryKey": "Por favor, introduzca su clave de recuperación:", - "@pleaseEnterRecoveryKey": {}, - "widgetNameError": "Por favor, introduzca un nombre a mostrar.", - "@widgetNameError": {}, - "addWidget": "Añadir widget", - "@addWidget": {}, - "@noKeyForThisMessage": {}, - "hydrateTor": "TOR: Importar sesión exportada", - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "storeInAppleKeyChain": "Almacenar en la KeyChain de Apple", - "@storeInAppleKeyChain": {}, - "hydrate": "Restaurar desde fichero de copia de seguridad", - "@hydrate": {}, - "invalidServerName": "Nombre del servidor no válido", - "@invalidServerName": {}, - "chatPermissions": "Permisos del chat", - "@chatPermissions": {}, - "sender": "Remitente", - "@sender": {}, - "storeInAndroidKeystore": "Almacenar en la KeyStore de Android", - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "saveKeyManuallyDescription": "Compartir esta clave manualmente usando el diálogo de compartir del sistema o el portapapeles.", - "@saveKeyManuallyDescription": {}, - "whyIsThisMessageEncrypted": "¿Por qué no se puede leer este mensaje?", - "@whyIsThisMessageEncrypted": {}, - "setChatDescription": "Establecer descripción del chat", - "@setChatDescription": {}, - "dehydrateWarning": "Esta acción no se puede deshacer. Asegúrese de que ha almacenado de forma segura el fichero de copia de seguridad.", - "@dehydrateWarning": {}, - "@noOtherDevicesFound": {}, - "redactedBy": "Censurado por {username}", - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "videoCallsBetaWarning": "Tenga en cuenta que las videollamadas están actualmente en fase beta. Es posible que no funcionen como se espera o que no funcionen de ninguna manera en algunas plataformas.", - "@videoCallsBetaWarning": {}, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "callingPermissions": "Permisos de llamadas", - "@callingPermissions": {}, - "@readUpToHere": {}, - "unlockOldMessages": "Desbloquear mensajes viejos", - "@unlockOldMessages": {}, - "numChats": "{number} chats", - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "optionalRedactReason": "(Opcional) Motivo para censurar este mensaje...", - "@optionalRedactReason": {}, - "dehydrate": "Exportar sesión y limpiar dispositivo", - "@dehydrate": {}, - "@archiveRoomDescription": {}, - "switchToAccount": "Cambiar a la cuenta {number}", - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "experimentalVideoCalls": "Videollamadas experimentales", - "@experimentalVideoCalls": {}, - "pleaseEnterRecoveryKeyDescription": "Para desbloquear sus viejos mensajes, introduzca su clave de recuperación que se generó en una sesión anterior. Su clave de recuperación NO es su contraseña.", - "@pleaseEnterRecoveryKeyDescription": {}, - "inviteContactToGroupQuestion": "¿Quieres invitar a {contact} al chat {groupName}?", - "@inviteContactToGroupQuestion": {}, - "redactedByBecause": "Censurado por {username} porque: \"{reason}\"", - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "youHaveWithdrawnTheInvitationFor": "Usted retiró la invitación a {user}", - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@appearOnTopDetails": {}, - "enterRoom": "Unirse a la sala", - "@enterRoom": {}, - "confirmEventUnpin": "¿Seguro que quiere desfijar permanentemente el evento?", - "@confirmEventUnpin": {}, - "youInvitedUser": "📩 Usted invitó a {user}", - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "redactMessageDescription": "El mensaje será censurado para todas las personas participantes en la conversación. Esto no se puede deshacer.", - "@redactMessageDescription": {}, - "recoveryKey": "Clave de recuperación", - "@recoveryKey": {}, - "@invalidInput": {}, - "dehydrateTorLong": "Si está usando TOR, es recomendable exportar la sesión antes de cerrar la ventana.", - "@dehydrateTorLong": {}, - "doNotShowAgain": "No mostrar de nuevo", - "@doNotShowAgain": {}, - "@report": {}, - "hideUnimportantStateEvents": "Ocultar eventos de estado no importantes", - "@hideUnimportantStateEvents": {}, - "screenSharingTitle": "Compartir la pantalla", - "@screenSharingTitle": {}, - "widgetCustom": "Personalizado", - "@widgetCustom": {}, - "youBannedUser": "Usted prohibió el acceso a {user}", - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@openLinkInBrowser": {}, - "@disableEncryptionWarning": {}, - "directChat": "Chat directo", - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@inviteGroupChat": {}, - "appearOnTop": "Aparecer en la cima", - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "foregroundServiceRunning": "Esta notificación aparece cuando el servicio en segundo plano se está ejecutando.", - "@foregroundServiceRunning": {}, - "wasDirectChatDisplayName": "Chat vacío (era {oldDisplayName})", - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "noChatDescriptionYet": "No se ha creado una descripción del chat aún.", - "@noChatDescriptionYet": {}, - "@learnMore": {}, - "chatDescriptionHasBeenChanged": "Se ha cambiado la descripción del chat", - "@chatDescriptionHasBeenChanged": {}, - "dehydrateTor": "TOR: Exportar sesión", - "@dehydrateTor": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "youKicked": "👞 Usted expulsó a {user}", - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@sorryThatsNotPossible": {}, - "shareInviteLink": "Compartir enlace de invitación", - "@shareInviteLink": {}, - "commandHint_markasdm": "Marcar como sala de mensajes directos para el ID de Matrix", - "@commandHint_markasdm": {}, - "recoveryKeyLost": "¿Perdió su clave de recuperación?", - "@recoveryKeyLost": {}, - "@deviceKeys": {}, - "emoteKeyboardNoRecents": "Los emotes usados recientemente aparecerán aquí...", - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "youJoinedTheChat": "Usted se ha unido al chat", - "@youJoinedTheChat": {}, - "errorAddingWidget": "Fallo al añadir el widget.", - "@errorAddingWidget": {}, - "commandHint_dm": "Iniciar un chat directo\nUse --no-encryption para deshabilitar el cifrado", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "youUnbannedUser": "Usted volvió a permitir el acceso a {user}", - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "emojis": "Emojis", - "@emojis": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "createGroup": "Crear grupo", - "@createGroup": {}, - "hydrateTorLong": "¿Exportó su sesión la última vez que estuvo en TOR? Impórtela rápidamente y continúe chateando.", - "@hydrateTorLong": {}, - "custom": "Personalizado", - "@custom": {}, - "@noBackupWarning": {}, - "storeInSecureStorageDescription": "Almacenar la clave de recuperación en el almacenamiento seguro de este dispositivo.", - "@storeInSecureStorageDescription": {}, - "@kickUserDescription": {}, - "pinMessage": "Anclar a la sala", - "@pinMessage": {}, - "@invite": {}, - "indexedDbErrorTitle": "Problemas con el modo privado", - "@indexedDbErrorTitle": {}, - "googlyEyesContent": "{senderName} te manda ojos saltones", - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "cuddleContent": "{senderName} se acurruca contigo", - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "commandHint_googly": "Enviar unos ojos saltones", - "@commandHint_googly": {}, - "@placeCall": {} + "@@locale": "es", + "@@last_modified": "2021-08-14 12:41:10.097243", + "about": "Acerca de", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Aceptar", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} aceptó la invitación", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Cuenta", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} activó el cifrado de extremo a extremo", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Añadir dirección de correo", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "admin": "Administrador", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} respondió a la llamada", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Cualquiera puede unirse", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Archivo", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "¿Pueden unirse los usuarios visitantes?", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "¿Estás seguro?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "¿Confirma que quiere cerrar sesión?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Para poder confirmar a la otra persona, ingrese su contraseña de almacenamiento segura o la clave de recuperación.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "¿Aceptar esta solicitud de verificación de {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerLoginTypesException": "El servidor soporta los siguientes mecanismos para autenticación:\n{serverVersions}\npero esta aplicación sólo soporta:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "El servidor soporta las siguientes versiones de la especificación:\n{serverVersions}\npero esta aplicación sólo soporta las versiones {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "Vetar del chat", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Vetado", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} vetó a {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changeDeviceName": "Cambiar el nombre del dispositivo", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} cambió el icono del chat", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} cambió la descripción del chat a: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} cambió el nombre del chat a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} cambió los permisos del chat", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} cambió su nombre visible a: {displayname}", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} cambió las reglas de acceso de visitantes", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} cambió las reglas de acceso de visitantes a: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} cambió la visibilidad del historial", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} cambió la visibilidad del historial a: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} cambió las reglas de ingreso", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} cambió las reglas de ingreso a {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} cambió su imagen de perfil", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} cambió el alias de la sala", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} cambió el enlace de invitación", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Cambiar la contraseña", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Cambiar el servidor", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Cambia tu estilo", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Cambiar el nombre del grupo", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "El cifrado se ha corrompido", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Copia de respaldo del chat", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "La copia de respaldo del chat está protegida por una clave de seguridad. Procure no perderla.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Detalles del chat", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chats": "Conversaciones", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Elija una contraseña segura", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Borrar archivo", + "@clearArchive": {}, + "close": "Cerrar", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Por favor compare los emojis", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Por favor compare los números", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Conectar", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "El contacto ha sido invitado al grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Copiado al portapapeles", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Copiar al portapapeles", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "No se pudo descifrar el mensaje: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Crear", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "💬{username} creó el chat", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "currentlyActive": "Actualmente activo", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Oscuro", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Se desactivará su cuenta de usuario. ¡La operación no se puede cancelar! ¿Está seguro?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Cancelar cuenta", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Eliminar mensaje", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "El nombre visible ha cambiado", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Descargar archivo", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Editar nombre visible", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Editar alias de la sala", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "¡El emote ya existe!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "¡El atajo del emote es inválido!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Paquetes de emoticonos para la habitación", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Configuración de emotes", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Atajo de emote", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "¡Debes elegir un atajo de emote y una imagen!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Chat vacío", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Habilitar paquete de emoticonos a nivel general", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "Cifrado", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "El cifrado no está habilitado", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} terminó la llamada", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "Introducir una dirección de correo electrónico", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Ingrese su servidor", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "¡Todo listo!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "fileName": "Nombre del archivo", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "Reenviar", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "Desde que se unió", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "Desde la invitación", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "El grupo es público", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Grupo con {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "Los visitantes están prohibidos", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Los visitantes pueden unirse", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} ha retirado la invitación para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Ayuda", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Ocultar sucesos censurados", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Ocultar sucesos desconocidos", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "id": "Identificación", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Identidad", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Usuarios ignorados", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase de contraseña o clave de recuperación incorrecta", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Invitar contacto", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Invitar contacto a {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Invitado", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "📩{username} invitó a {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Sólo usuarios invitados", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} te invitó a FluffyChat.\n1. Instale FluffyChat: https://fluffychat.im\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "está escribiendo…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "👋{username} se unió al chat", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Unirse a la sala", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "👞{username} echó a {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "🙅{username} echó y vetó a {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Echar del chat", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Última vez activo: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Abandonar", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Abandonó el chat", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licencia", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Mostrar {count} participantes más", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Cargando… Por favor espere.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Mostrar más…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Acceso", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Iniciar sesión en {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Cerrar sesión", + "@logout": { + "type": "text", + "placeholders": {} + }, + "mention": "Mencionar", + "@mention": { + "type": "text", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Silenciar chat", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nuevo mensaje en FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "¡Nueva solicitud de verificación!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Siguiente", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Ningún emote encontrado. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Sólo se puede activar el cifrado en cuanto la sala deja de ser de acceso público.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "none": "Ninguno", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Sin autorización", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Ninguna sala encontrada…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "offline": "Desconectado", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "Conectado", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "La copia de seguridad de la clave en línea está habilitada", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, algo salió mal…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Abrir la aplicación para leer los mensajes", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Abrir cámara", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "contraseña o clave de recuperación", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Contraseña", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "La contraseña ha sido cambiada", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "people": "Personas", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Elegir imagen", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Reproducir {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseClickOnLink": "Haga clic en el enlace del correo electrónico y luego continúe.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Por favor ingrese su contraseña", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Por favor ingrese su nombre de usuario", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Por favor, siga las instrucciones del sitio web y presione \"siguiente\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Privacidad", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "Grabando", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} censuró un suceso", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "Rechazar", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rechazó la invitación", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Volver a unirse", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Eliminar", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Eliminar todos los otros dispositivos", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Eliminado por {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Eliminar dispositivo", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Eliminar la expulsión", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Mostrar el contenido con mensajes enriquecidos", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Solicitar permiso", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "La sala ha subido de categoría", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Versión de sala", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "send": "Enviar", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Enviar un mensaje", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Enviar audio", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Enviar un archivo", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Enviar una imagen", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Enviar el original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Enviar video", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} envió un archivo", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} envió un audio", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} envió una imagen", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} envió un sticker", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} envió un video", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} envió información de la llamada", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setAsCanonicalAlias": "Fijar alias principal", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Establecer enlace de invitación", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Establecer estado", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Ajustes", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Compartir", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} compartió la ubicación", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "showPassword": "Mostrar contraseña", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "skip": "Omitir", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Código fuente", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} comenzó una llamada", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "statusExampleMessage": "¿Cómo estás hoy?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Enviar", + "@submit": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "No coinciden", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Coinciden", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transferir desde otro dispositivo", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Intentar enviar nuevamente", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Indisponible", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} admitió a {targetName} nuevamente", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Dispositivo desconocido", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritmo de cifrado desconocido", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Evento desconocido '{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unmuteChat": "Dejar de silenciar el chat", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Despinchar", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 chat no leído} other{{unreadCount} chats no leídos}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "userAndOthersAreTyping": "{username} y {count} más están escribiendo…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} y {username2} están escribiendo…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} está escribiendo…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "{username} abandonó el chat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nombre de usuario", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} envió un evento {type}", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verified": "Verificado", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Comenzar verificación", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "¡Has verificado exitosamente!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Verificando la otra cuenta", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Video llamada", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilidad del historial del chat", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible para todos los participantes", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Visible para todo el mundo", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Mensaje de voz", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Esperando a que el socio acepte la solicitud…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Esperando a que el socio acepte los emojis…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Esperando a que el socio acepte los números…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Fondo de pantalla:", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "¡Advertencia!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Te enviamos un correo electrónico", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Quién tiene permitido unirse al grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Escribe un mensaje…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Sí", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Tú", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Ya no estás participando en este chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Has sido vetado de este chat", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "autoplayImages": "Reproducir emoticonos y stickers animados automáticamente", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "allChats": "Todos los chats", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Agregar al espacio", + "@addToSpace": {}, + "cantOpenUri": "No puedo abrir el URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "all": "Todo", + "@all": { + "type": "text", + "placeholders": {} + }, + "appLock": "Bloqueo de aplicación", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Mensajes de bot", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "Se ha cerrado en la sesión de uno de sus clientes", + "@oneClientLoggedOut": {}, + "addAccount": "Añadir cuenta", + "@addAccount": {}, + "editBundlesForAccount": "Editar paquetes para esta cuenta", + "@editBundlesForAccount": {}, + "addToBundle": "Agregar al paquete", + "@addToBundle": {}, + "bundleName": "Nombre del paquete", + "@bundleName": {}, + "saveFile": "Guardar el archivo", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Enviar stickers", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Establecer nivel de permisos", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "shareLocation": "Compartir ubicación", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Inicio de sesión único", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "status": "Estado", + "@status": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizando... por favor espere.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "He hecho clic en el enlace", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "directChats": "Chat directo", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "Error al obtener la ubicación: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "howOffensiveIsThisContent": "¿Cuán ofensivo es este contenido?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Invitar por mí", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Aún no ha agregado una forma de recuperar su contraseña.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count} usuarios están escribiendo…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "or": "O", + "@or": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "El espacio es público", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "El chat se ha agregado a este espacio", + "@chatHasBeenAddedToThisSpace": {}, + "commandInvalid": "Comando inválido", + "@commandInvalid": { + "type": "text" + }, + "passwordRecovery": "Recuperación de contraseña", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "security": "Seguridad", + "@security": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Extremadamente ofensivo", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueado", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Configurar chat", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Sin conexión al servidor", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Tu clave pública", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Contraseña olvidada", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "reason": "Razón", + "@reason": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Cambios de miembros", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "createNewSpace": "Nuevo espacio", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "Establecer emoticonos personalizados", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "notifications": "Notificaciones", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificaciones habilitadas para esta cuenta", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "offensive": "Ofensiva", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "serverRequiresEmail": "Este servidor necesita validar su dirección de correo electrónico para registrarse.", + "@serverRequiresEmail": {}, + "pleaseChoose": "Por favor elija", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Reemplazar habitación con una versión más nueva", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "El contenido ha sido reportado a los administradores del servidor", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Mensaje de informe", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "search": "Buscar", + "@search": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permiso de ubicación denegado. Concédeles que puedan compartir tu ubicación.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Nivel de permiso predeterminado", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "obtainingLocation": "Obteniendo ubicación…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Regla de Push", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "register": "Registrarse", + "@register": { + "type": "text", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "text" + }, + "toggleMuted": "Alternar silenciado", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Demasiadas solicitudes. ¡Por favor inténtelo más tarde!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Con esta dirección puede recuperar su contraseña.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "commandHint_send": "Enviar texto", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "deviceId": "ID del dispositivo", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Contiene nombre de usuario", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "¡UPS¡ Desafortunadamente, se produjo un error al configurar las notificaciones push.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Quitar tu avatar", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Habilitar la encriptación", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "messages": "Mensajes", + "@messages": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Tamaño de fuente", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Prohibir al usuario dado en esta sala", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_unban": "Des banear al usuario dado en esta sala", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandMissing": "{command} no es un comando.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "scanQrCode": "Escanear código QR", + "@scanQrCode": {}, + "homeserver": "Homeserver", + "@homeserver": {}, + "newChat": "Nuevo chat", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "commandHint_join": "Únete a la sala indicada", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "sendOnEnter": "Enviar con enter", + "@sendOnEnter": {}, + "changeYourAvatar": "Cambiar tu avatar", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "commandHint_me": "Descríbete", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_html": "Enviar texto con formato HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Invitar al usuario indicado a esta sala", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_kick": "Eliminar el usuario indicado de esta sala", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Deja esta sala", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Selecciona tu foto para esta sala (by mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Establece tu nombre para mostrar para esta sala", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Establece el nivel de potencia del usuario dado (default: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar texto sin formato", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar respuesta como reacción", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "containsDisplayName": "Contiene nombre para mostrar", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Editar avatar de sala", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "locationDisabledNotice": "Los servicios de ubicación están deshabilitado. Habilite para poder compartir su ubicación.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Encriptado", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Ir a la nueva sala", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} no es un servidor matrix, usar {server2} en su lugar?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "openInMaps": "Abrir en maps", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "removeFromBundle": "Quitar de este paquete", + "@removeFromBundle": {}, + "link": "Link", + "@link": {}, + "enableMultiAccounts": "(BETA) habilite varias cuenta en este dispositivo", + "@enableMultiAccounts": {}, + "pleaseEnter4Digits": "Ingrese 4 dígitos o déjelo en blanco para deshabilitar el bloqueo de la aplicación.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Elija un código de acceso", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Por favor ingrese su PIN", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "redactMessage": "Censurar mensaje", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Enviar mensajes", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Nombre del espacio", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Alternar favorito", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Marcar como: leído / no leído", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Quién puede realizar qué acción", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "¿Por qué quieres denunciar esto?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "¿Limpiar la copia de seguridad de su chat para crear una nueva clave de seguridad?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Se ha configurado la copia de respaldo del chat.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "No verificado", + "@unverified": {}, + "commandHint_clearcache": "Limpiar cache", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "messageInfo": "Información del mensaje", + "@messageInfo": {}, + "time": "Tiempo", + "@time": {}, + "openVideoCamera": "Abrir la cámara para un video", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "repeatPassword": "Repita la contraseña", + "@repeatPassword": {}, + "removeFromSpace": "Eliminar del espacio", + "@removeFromSpace": {}, + "addToSpaceDescription": "Elige un espacio para añadir este chat a el.", + "@addToSpaceDescription": {}, + "openGallery": "Abrir galería", + "@openGallery": {}, + "start": "Iniciar", + "@start": {}, + "commandHint_discardsession": "Descartar sesión", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "messageType": "Tipo de Mensaje", + "@messageType": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "publish": "Publicar", + "@publish": {}, + "newSpace": "Nuevo espacio", + "@newSpace": {}, + "allSpaces": "Todos los espacios", + "@allSpaces": {}, + "widgetUrlError": "Esta no es una URL válida.", + "@widgetUrlError": {}, + "commandHint_markasgroup": "Marcar como grupo", + "@commandHint_markasgroup": {}, + "nextAccount": "Siguiente cuenta", + "@nextAccount": {}, + "youRejectedTheInvitation": "Rechazaste la invitación", + "@youRejectedTheInvitation": {}, + "newGroup": "Nuevo grupo", + "@newGroup": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "previousAccount": "Cuenta anterior", + "@previousAccount": {}, + "users": "Usuarios", + "@users": {}, + "youInvitedBy": "📩 Has sido invitado por {user}", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "youAcceptedTheInvitation": "👍 Aceptaste la invitación", + "@youAcceptedTheInvitation": {}, + "widgetEtherpad": "Nota de texto", + "@widgetEtherpad": {}, + "commandHint_cuddle": "Mandar una carantoña", + "@commandHint_cuddle": {}, + "supposedMxid": "Esto debería ser {mxid}", + "@supposedMxid": { + "type": "text", + "placeholders": { + "mxid": {} + } + }, + "importFromZipFile": "Importar de un archivo .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Exportar paquete de emotes como .zip", + "@exportEmotePack": {}, + "addChatDescription": "Añadir una descripción del chat", + "@addChatDescription": {}, + "sendTypingNotifications": "Enviar notificaciones \"está escribiendo\"", + "@sendTypingNotifications": {}, + "importEmojis": "Importar emojis", + "@importEmojis": {}, + "confirmMatrixId": "Por favor confirma tu Matrix ID para borrar tu cuenta.", + "@confirmMatrixId": {}, + "notAnImage": "El archivo no es una imagen.", + "@notAnImage": {}, + "commandHint_hug": "Mandar un abrazo", + "@commandHint_hug": {}, + "importNow": "Importar ahora", + "@importNow": {}, + "hugContent": "{senderName} te abraza", + "@hugContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "otherCallingPermissions": "Micrófono, cámara y otros permisos de FluffyChat", + "@otherCallingPermissions": {}, + "emailOrUsername": "Correo electrónico o nombre de usuario", + "@emailOrUsername": {}, + "countFiles": "{count} archivos", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "reportUser": "Reportar usuario", + "@reportUser": {}, + "voiceCall": "Llamada de voz", + "@voiceCall": {}, + "reactedWith": "{sender} reaccionó con {reaction}", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "markAsRead": "Marcar como leído", + "@markAsRead": {}, + "widgetName": "Nombre", + "@widgetName": {}, + "replace": "Reemplazar", + "@replace": {}, + "unsupportedAndroidVersionLong": "Esta característica requiere una versión más reciente de Android. Por favor, compruebe las actualizaciones o la compatibilidad de LineageOS.", + "@unsupportedAndroidVersionLong": {}, + "storeSecurlyOnThisDevice": "Almacenar de forma segura en este dispositivo", + "@storeSecurlyOnThisDevice": {}, + "openChat": "Abrir chat", + "@openChat": {}, + "screenSharingDetail": "Usted está compartiendo su pantalla en FluffyChat", + "@screenSharingDetail": {}, + "allRooms": "Todos los chats grupales", + "@allRooms": { + "type": "text", + "placeholders": {} + }, + "widgetVideo": "Vídeo", + "@widgetVideo": {}, + "dismiss": "Descartar", + "@dismiss": {}, + "unsupportedAndroidVersion": "Versión de Android no compatible", + "@unsupportedAndroidVersion": {}, + "indexedDbErrorLong": "El almacenamiento de mensajes, por desgracia, no está habilitado en el modo privado por defecto.\nPor favor, visite\n - about:config\n - Establezca dom.indexedDB.privateBrowsing.enabled a true\nDe otra forma, no es posible usar FluffyChat.", + "@indexedDbErrorLong": {}, + "startFirstChat": "Comience su primer chat", + "@startFirstChat": {}, + "commandHint_create": "Crear un chat grupal vacío\nUse --no-encryption para deshabilitar el cifrado", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "user": "Usuario", + "@user": {}, + "separateChatTypes": "Separar chats directos de grupos", + "@separateChatTypes": { + "type": "text", + "placeholders": {} + }, + "tryAgain": "Inténtelo de nuevo", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 Usted expulsó y prohibió el acceso a {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "messagesStyle": "Mensajes:", + "@messagesStyle": {}, + "chatDescription": "Descripción del chat", + "@chatDescription": {}, + "callingAccountDetails": "Permite a FluffyChat utilizar la aplicación de llamadas nativa de Android.", + "@callingAccountDetails": {}, + "enterSpace": "Unirse al espacio", + "@enterSpace": {}, + "pleaseEnterRecoveryKey": "Por favor, introduzca su clave de recuperación:", + "@pleaseEnterRecoveryKey": {}, + "widgetNameError": "Por favor, introduzca un nombre a mostrar.", + "@widgetNameError": {}, + "addWidget": "Añadir widget", + "@addWidget": {}, + "hydrateTor": "TOR: Importar sesión exportada", + "@hydrateTor": {}, + "storeInAppleKeyChain": "Almacenar en la KeyChain de Apple", + "@storeInAppleKeyChain": {}, + "hydrate": "Restaurar desde fichero de copia de seguridad", + "@hydrate": {}, + "invalidServerName": "Nombre del servidor no válido", + "@invalidServerName": {}, + "chatPermissions": "Permisos del chat", + "@chatPermissions": {}, + "sender": "Remitente", + "@sender": {}, + "storeInAndroidKeystore": "Almacenar en la KeyStore de Android", + "@storeInAndroidKeystore": {}, + "saveKeyManuallyDescription": "Compartir esta clave manualmente usando el diálogo de compartir del sistema o el portapapeles.", + "@saveKeyManuallyDescription": {}, + "whyIsThisMessageEncrypted": "¿Por qué no se puede leer este mensaje?", + "@whyIsThisMessageEncrypted": {}, + "setChatDescription": "Establecer descripción del chat", + "@setChatDescription": {}, + "dehydrateWarning": "Esta acción no se puede deshacer. Asegúrese de que ha almacenado de forma segura el fichero de copia de seguridad.", + "@dehydrateWarning": {}, + "redactedBy": "Censurado por {username}", + "@redactedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "videoCallsBetaWarning": "Tenga en cuenta que las videollamadas están actualmente en fase beta. Es posible que no funcionen como se espera o que no funcionen de ninguna manera en algunas plataformas.", + "@videoCallsBetaWarning": {}, + "callingPermissions": "Permisos de llamadas", + "@callingPermissions": {}, + "unlockOldMessages": "Desbloquear mensajes viejos", + "@unlockOldMessages": {}, + "numChats": "{number} chats", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "optionalRedactReason": "(Opcional) Motivo para censurar este mensaje...", + "@optionalRedactReason": {}, + "dehydrate": "Exportar sesión y limpiar dispositivo", + "@dehydrate": {}, + "switchToAccount": "Cambiar a la cuenta {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "experimentalVideoCalls": "Videollamadas experimentales", + "@experimentalVideoCalls": {}, + "pleaseEnterRecoveryKeyDescription": "Para desbloquear sus viejos mensajes, introduzca su clave de recuperación que se generó en una sesión anterior. Su clave de recuperación NO es su contraseña.", + "@pleaseEnterRecoveryKeyDescription": {}, + "inviteContactToGroupQuestion": "¿Quieres invitar a {contact} al chat {groupName}?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Censurado por {username} porque: \"{reason}\"", + "@redactedByBecause": { + "type": "text", + "placeholders": { + "username": {}, + "reason": {} + } + }, + "youHaveWithdrawnTheInvitationFor": "Usted retiró la invitación a {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "enterRoom": "Unirse a la sala", + "@enterRoom": {}, + "confirmEventUnpin": "¿Seguro que quiere desfijar permanentemente el evento?", + "@confirmEventUnpin": {}, + "youInvitedUser": "📩 Usted invitó a {user}", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "redactMessageDescription": "El mensaje será censurado para todas las personas participantes en la conversación. Esto no se puede deshacer.", + "@redactMessageDescription": {}, + "recoveryKey": "Clave de recuperación", + "@recoveryKey": {}, + "dehydrateTorLong": "Si está usando TOR, es recomendable exportar la sesión antes de cerrar la ventana.", + "@dehydrateTorLong": {}, + "doNotShowAgain": "No mostrar de nuevo", + "@doNotShowAgain": {}, + "hideUnimportantStateEvents": "Ocultar eventos de estado no importantes", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "Compartir la pantalla", + "@screenSharingTitle": {}, + "widgetCustom": "Personalizado", + "@widgetCustom": {}, + "youBannedUser": "Usted prohibió el acceso a {user}", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "directChat": "Chat directo", + "@directChat": {}, + "appearOnTop": "Aparecer en la cima", + "@appearOnTop": {}, + "foregroundServiceRunning": "Esta notificación aparece cuando el servicio en segundo plano se está ejecutando.", + "@foregroundServiceRunning": {}, + "wasDirectChatDisplayName": "Chat vacío (era {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "text", + "placeholders": { + "oldDisplayName": {} + } + }, + "noChatDescriptionYet": "No se ha creado una descripción del chat aún.", + "@noChatDescriptionYet": {}, + "chatDescriptionHasBeenChanged": "Se ha cambiado la descripción del chat", + "@chatDescriptionHasBeenChanged": {}, + "dehydrateTor": "TOR: Exportar sesión", + "@dehydrateTor": {}, + "youKicked": "👞 Usted expulsó a {user}", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "shareInviteLink": "Compartir enlace de invitación", + "@shareInviteLink": {}, + "commandHint_markasdm": "Marcar como sala de mensajes directos para el ID de Matrix", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "¿Perdió su clave de recuperación?", + "@recoveryKeyLost": {}, + "emoteKeyboardNoRecents": "Los emotes usados recientemente aparecerán aquí...", + "@emoteKeyboardNoRecents": { + "type": "text", + "placeholders": {} + }, + "youJoinedTheChat": "Usted se ha unido al chat", + "@youJoinedTheChat": {}, + "errorAddingWidget": "Fallo al añadir el widget.", + "@errorAddingWidget": {}, + "commandHint_dm": "Iniciar un chat directo\nUse --no-encryption para deshabilitar el cifrado", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "youUnbannedUser": "Usted volvió a permitir el acceso a {user}", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "emojis": "Emojis", + "@emojis": {}, + "createGroup": "Crear grupo", + "@createGroup": {}, + "hydrateTorLong": "¿Exportó su sesión la última vez que estuvo en TOR? Impórtela rápidamente y continúe chateando.", + "@hydrateTorLong": {}, + "custom": "Personalizado", + "@custom": {}, + "storeInSecureStorageDescription": "Almacenar la clave de recuperación en el almacenamiento seguro de este dispositivo.", + "@storeInSecureStorageDescription": {}, + "pinMessage": "Anclar a la sala", + "@pinMessage": {}, + "indexedDbErrorTitle": "Problemas con el modo privado", + "@indexedDbErrorTitle": {}, + "googlyEyesContent": "{senderName} te manda ojos saltones", + "@googlyEyesContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "cuddleContent": "{senderName} se acurruca contigo", + "@cuddleContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "commandHint_googly": "Enviar unos ojos saltones", + "@commandHint_googly": {} } From dba69bdd21135c05ed106fd38128608452e2cbae Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:45 +0000 Subject: [PATCH 063/106] Translated using Weblate (Japanese) Currently translated at 69.9% (456 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ja/ --- assets/l10n/intl_ja.arb | 4554 +++++++++++++++++++-------------------- 1 file changed, 2206 insertions(+), 2348 deletions(-) diff --git a/assets/l10n/intl_ja.arb b/assets/l10n/intl_ja.arb index a5016852f..70db07f8f 100644 --- a/assets/l10n/intl_ja.arb +++ b/assets/l10n/intl_ja.arb @@ -1,2349 +1,2207 @@ { - "@@locale": "ja", - "@@last_modified": "2021-08-14 12:41:09.978060", - "about": "このアプリについて", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "承諾する", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "👍{username}が招待を承諾しました", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "アカウント", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "🔐{username}がエンドツーエンド暗号化を有効にしました", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Eメールを追加", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "admin": "管理者", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "エイリアス", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "すべて", - "@all": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName}は通話に出ました", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "誰でも参加できる", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "appLock": "アプリのロック", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "archive": "アーカイブ", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "ゲストユーザーの参加を許可する", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "これでよろしいですか?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "ログアウトしてよろしいですか?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "他の人を署名するためにはパスフレーズやリカバリーキーを入力してください。", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "{username}の検証リクエストを承認しますか?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerLoginTypesException": "ホームサーバーでサポートされているログインタイプ:\n{serverVersions}\nアプリがサポートしているログインタイプ:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "ホームサーバーでサポートされているバージョン:\n{serverVersions}\nアプリでは{supportedVersions}しかサポートされていません", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "チャットからBANする", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "BANされています", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username}が{targetName}をBANしました", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "デバイスをブロックする", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "ブロックしました", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "ボットメッセージ", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "キャンセル", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "changeDeviceName": "デバイス名を変更", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username}がチャットアバターを変更しました", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username}がチャットの説明を「{description}」に変更しました", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username}がチャットの名前を「{chatname}」に変更しました", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username}がチャットの権限を変更しました", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username}が表示名を「{displayname}」に変更しました", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username}がゲストのアクセスルールを変更しました", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username}がゲストのアクセスルールを{rules}に変更しました", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "{username}が履歴の表示設定を変更しました", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username}が履歴の表示設定を{rules}に変更しました", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username}が参加ルールを変更しました", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username}が参加ルールを{joinRules}に変更しました", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username}がアバターを変更しました", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username}が部屋のエイリアスを変更しました", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username}が招待リンクを変更しました", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "パスワードを変更", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "ホームサーバーの変更", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "スタイルを変更する", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "グループの名前を変更する", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "暗号が破損しています", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "チャット", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "チャットのバックアップ", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "古いメッセージはリカバリーキーで保護されます。紛失しないようにご注意ください。", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "チャットの詳細", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chats": "チャット", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "強いパスワードを選択してください", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "アーカイブを消去", - "@clearArchive": {}, - "close": "閉じる", - "@close": { - "type": "text", - "placeholders": {} - }, - "compareEmojiMatch": "表示されている絵文字が他のデバイスで表示されているものと一致するか確認してください:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "表示されている数字が他のデバイスで表示されているものと一致するか確認してください:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "チャットの設定", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "確認", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "接続", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "連絡先に登録された人が招待されました", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "表示名を含んでいます", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "ユーザー名を含んでいます", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "サーバー管理者に通報されました", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "クリップボードにコピーされました", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "コピー", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "クリップボードにコピー", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "メッセージを解読できませんでした: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count}名の参加者", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "作成", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "💬 {username}がチャットを作成しました", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "currentlyActive": "現在アクティブです", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "ダーク", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{month}-{day}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{year}/{month}/{day}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "あなたのアカウントを無効化します。この操作は元に戻せません!よろしいですか?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "デフォルトの権限レベル", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "delete": "削除", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "アカウントの削除", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "メッセージの削除", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "デバイス", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "デバイスID", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "デバイス", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "ダイレクトチャット", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "表示名が変更されました", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "ファイルのダウンロード", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "編集", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "ブロックしたサーバーを編集", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "表示名を編集", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "ルームエイリアスを編集", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "部屋のアバターを編集する", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Emoteはすでに存在します!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "不正なEmoteショートコード!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "部屋のEmoteパック", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Emote設定", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Emoteショートコード", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Emoteショートコードと画像を選択してください!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "空のチャット", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "emoteをグローバルに有効にする", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "暗号化を有効にする", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "一度暗号化を有効にするともとに戻せません。よろしいですか?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encrypted": "暗号化", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryption": "暗号化", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "暗号化されていません", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName}は通話を切断しました", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "メールアドレスを入力してください", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "ホームサーバーを入力してください", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "すべての準備は完了しました!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "とても攻撃的", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "fileName": "ファイル名", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "フォントサイズ", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "進む", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "参加時点から閲覧可能", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "招待時点から閲覧可能", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "新規ルームへ", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "グループ", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "グループは公開されています", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "グループ", - "@groups": { - "type": "text", - "placeholders": {} - }, - "groupWith": "{displayname}とグループを作成する", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "ゲストは許可されていません", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "ゲストが許可されています", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{targetName}の招待を{username}が取り下げました", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "ヘルプ", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "編集済みイベントを非表示にする", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "不明なイベントを非表示にする", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "どのくらい攻撃的でしたか?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "ID", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "アイデンティティ", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "無視する", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "無視されたユーザー", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "リンクをクリックしました", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "パスフレーズかリカバリーキーが間違っています", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "非攻撃的", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "連絡先から招待する", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "連絡先から{groupName}に招待する", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "招待されました", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "📩 {username} が {targetName} を招待しました", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "招待されたユーザーのみ", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "自分への招待", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: https://fluffychat.im \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "が入力しています…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "👋 {username} がチャットに参加しました", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "部屋に参加", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "👞 {username} は {targetName} をキックしました", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "🙅 {username} が {targetName} をキックしブロックしました", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "チャットからキックする", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "最終アクティブ: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "退室する", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "退室しました", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "ライセンス", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "ライト", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "あと{count}名参加者を読み込む", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "読み込み中…お待ちください。", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "更に読み込む…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "login": "ログイン", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "{homeserver}にログインする", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "ログアウト", - "@logout": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "メンバーの変更", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "メンション", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "メッセージ", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "モデレータ", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "チャットのミュート", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "新規チャット", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "💬 FluffyChatに新しいメッセージがあります", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "認証リクエスト!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "次へ", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "いいえ", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "サーバーに接続できません", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Emoteは見つかりませんでした😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "ルームを非公開にした後暗号化を有効にできます。", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "あなたのスマホにはGoogleサービスがないようですね。プライバシーを保護するための良い選択です!プッシュ通知を受け取るには https://microg.org/ または https://unifiedpush.org/ を使うことをお勧めします。", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "none": "なし", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "パスワードを回復する方法をまだ追加していません。", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "noPermission": "権限がありません", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "部屋は見つかりませんでした…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "通知", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "このアカウントでは通知が有効です", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count}人が入力中…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "offensive": "攻撃的", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "オフライン", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "OK", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "オンライン", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "オンライン鍵バックアップは使用されています", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "おっと、何かがうまくいきませんでした…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "アプリを開いてメッセージを確認してください", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "カメラを開く", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "participant": "参加者", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "パスフレーズかリカバリーキー", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "パスワード", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "パスワードを忘れた", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "パスワードが変更されました", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "パスワードリカバリー", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "人々", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "画像を選択してください", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "ピン", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "{fileName}を再生する", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChooseAPasscode": "パスコードを選んでください", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "メールのリンクから進めてください。", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "アプリのロック用に4桁の数字を入力してください。空欄の場合は無効になります。", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "パスワードを入力してください", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "PINを入力してください", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "ユーザー名を入力してください", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "ウェブサイトにあるやり方を見てから次をタップしてください。", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "プライバシー", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "公開された部屋", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "pushRules": "ルールを追加する", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "reason": "理由", - "@reason": { - "type": "text", - "placeholders": {} - }, - "recording": "録音中", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username}がイベントを編集しました", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactMessage": "メッセージを書く", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "reject": "拒否", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username}は招待を拒否しました", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "再参加", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "消去", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "他のデバイスをすべて削除", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "{username}によって削除されました", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "デバイスの削除", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "チャットからのブロックを解除する", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "リッチメッセージをレンダリングする", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "部屋を新しいバージョンに変更する", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "返信", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "メッセージを通報", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "権限を要求する", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "部屋はアップグレードされました", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "ルームバージョン", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "search": "検索", - "@search": { - "type": "text", - "placeholders": {} - }, - "security": "セキュリティ", - "@security": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "{username}が既読", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "send": "送信", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "メッセージを送信", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "音声の送信", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendFile": "ファイルを送信", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "画像の送信", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "メッセージを送る", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "オリジナルの送信", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "動画を送信", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "📁 {username}はファイルを送信しました", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "🎤 {username}は音声を送信しました", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "🖼️ {username}は画像を送信しました", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "😊 {username}はステッカーを送信しました", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "🎥 {username}は動画を送信しました", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName}は通話情報を送信しました", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setAsCanonicalAlias": "メインエイリアスに設定", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "カスタムエモートの設定", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "招待リンクを設定する", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "権限レベルをセット", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setStatus": "ステータスの設定", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "設定", - "@settings": { - "type": "text", - "placeholders": {} - }, - "share": "共有", - "@share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username}は現在地を共有しました", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "showPassword": "パスワードを表示", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "skip": "スキップ", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "ソースコード", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName}は通話を開始しました", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "status": "ステータス", - "@status": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "お元気ですか?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "送信", - "@submit": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "システム", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "違います", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "一致しています", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "お気に入り切り替え", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "ミュート切り替え", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "既読/未読にマーク", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "リクエストが多すぎます。また後で試してみてください!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "違うデバイスから移行する", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "送信し直してみる", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "不在", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username}が{targetName}のBANを解除しました", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unblockDevice": "デバイスをブロック解除する", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "未知デバイス", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "未知の暗号化アルゴリズム", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "未知のイベント'{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "unmuteChat": "チャットをミュート解除する", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "ピンを外す", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{1件の未読メッセージ} other{{unreadCount}件の未読メッセージ}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "userAndOthersAreTyping": "{username}と他{count}名が入力しています…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username}と{username2}が入力しています…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username}が入力しています…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userLeftTheChat": "🚪 {username}はチャットから退室しました", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "username": "ユーザー名", - "@username": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "{username}は{type}イベントを送信しました", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "verified": "検証済み", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verify": "確認", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "確認を始める", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "確認が完了しました!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "他のアカウントを確認中", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "videoCall": "音声通話", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "チャット履歴の表示", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "すべての参加者が閲覧可能", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "すべての人が閲覧可能", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "ボイスメッセージ", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "パートナーのリクエスト承諾待ちです...", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "パートナーの絵文字承諾待ちです...", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "パートナーの数字承諾待ちです…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "壁紙", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "警告!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "あなたにメールを送信しました", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "誰がどの操作を実行できるか", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "誰がこのチャットに入れますか", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "これを通報する理由", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "チャットのバックアップを消去して、新しいリカバリーキーを作りますか?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "これらのアドレスを使用すると、パスワードを回復することができます。", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "メッセージを入力してください…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "はい", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "あなた", - "@you": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "あなたはもうこのチャットの参加者ではありません", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "チャットからBANされてしまいました", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "あなたの公開鍵", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "allChats": "すべて会話", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "スペースに追加", - "@addToSpace": {}, - "cantOpenUri": "URIが開けません {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "repeatPassword": "パスワードを繰り返そ", - "@repeatPassword": {}, - "autoplayImages": "GIFを自動的に再生する", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "yourChatBackupHasBeenSetUp": "チャットバックアップを設定ました。", - "@yourChatBackupHasBeenSetUp": {}, - "sendOnEnter": "Enterで送信", - "@sendOnEnter": {}, - "changeYourAvatar": "アバタるを変化しする", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "このスペースにチャットが追加されました", - "@chatHasBeenAddedToThisSpace": {}, - "commandHint_ban": "このユーザーを禁止する", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_clearcache": "キャッシュをクリアする", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandInvalid": "コマンドが無効", - "@commandInvalid": { - "type": "text" - }, - "commandHint_create": "空のグループチャットを作成\n暗号化を無効にするには、--no-encryption を使用", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_discardsession": "セッションを破棄", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "confirmMatrixId": "アカウントを削除するには、Matrix IDを確認してください。", - "@confirmMatrixId": {}, - "commandHint_markasgroup": "グループとしてマーク", - "@commandHint_markasgroup": {}, - "commandHint_join": "指定した部屋に参加", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_send": "テキストを送信", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "hydrate": "バックアップファイルから復元", - "@hydrate": {}, - "commandHint_html": "HTML形式のテキストを送信", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "指定したユーザーをこの部屋に招待", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandMissing": "{command} はコマンドではありません。", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "oneClientLoggedOut": "クライアントの 1つがログアウトしました", - "@oneClientLoggedOut": {}, - "addAccount": "アカウントを追加", - "@addAccount": {}, - "editBundlesForAccount": "このアカウントのバンドルを編集", - "@editBundlesForAccount": {}, - "unverified": "未検証", - "@unverified": {}, - "sender": "送信者", - "@sender": {}, - "placeCall": "電話をかける", - "@placeCall": {}, - "voiceCall": "音声通話", - "@voiceCall": {}, - "unsupportedAndroidVersionLong": "この機能を利用するには、より新しいAndroidのバージョンが必要です。アップデートまたはLineage OSのサポートをご確認ください。", - "@unsupportedAndroidVersionLong": {}, - "widgetVideo": "動画", - "@widgetVideo": {}, - "widgetName": "名称", - "@widgetName": {}, - "widgetCustom": "カスタム", - "@widgetCustom": {}, - "widgetJitsi": "Jitsi Meet", - "@widgetJitsi": {}, - "dehydrateWarning": "この操作は元に戻せません。バックアップファイルを安全に保存してください。", - "@dehydrateWarning": {}, - "dehydrate": "セッションのエクスポートとデバイスの消去", - "@dehydrate": {}, - "messageType": "メッセージの種類", - "@messageType": {}, - "start": "開始", - "@start": {}, - "publish": "公開", - "@publish": {}, - "indexedDbErrorTitle": "プライベートモードに関する問題", - "@indexedDbErrorTitle": {}, - "addWidget": "ウィジェットを追加", - "@addWidget": {}, - "youBannedUser": "{user} を禁止しました", - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "youJoinedTheChat": "チャットに参加しました", - "@youJoinedTheChat": {}, - "youHaveWithdrawnTheInvitationFor": "{user} への招待を取り下げました", - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "users": "ユーザー", - "@users": {}, - "youRejectedTheInvitation": "招待を拒否しました", - "@youRejectedTheInvitation": {}, - "screenSharingDetail": "FuffyChatで画面を共有しています", - "@screenSharingDetail": {}, - "homeserver": "ホームサーバー", - "@homeserver": {}, - "scanQrCode": "QRコードをスキャン", - "@scanQrCode": {}, - "obtainingLocation": "位置情報を取得しています…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "addToBundle": "バンドルに追加", - "@addToBundle": {}, - "removeFromBundle": "このバンドルから削除", - "@removeFromBundle": {}, - "bundleName": "バンドル名", - "@bundleName": {}, - "noMatrixServer": "{server1} はMatrixのサーバーではありません。代わりに {server2} を使用しますか?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "openVideoCamera": "ビデオ用にカメラを開く", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "link": "リンク", - "@link": {}, - "or": "または", - "@or": { - "type": "text", - "placeholders": {} - }, - "register": "登録", - "@register": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "アバターを削除する", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "saveFile": "ファイルを保存", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "recoveryKey": "リカバリーキー", - "@recoveryKey": {}, - "singlesignon": "シングルサインオン", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "スペースは公開されています", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "spaceName": "スペース名", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "startFirstChat": "最初のチャットを開始する", - "@startFirstChat": {}, - "addToSpaceDescription": "このチャットを追加するスペースを選択してください。", - "@addToSpaceDescription": {}, - "messageInfo": "メッセージの情報", - "@messageInfo": {}, - "openGallery": "ギャラリーを開く", - "@openGallery": {}, - "removeFromSpace": "スペースから削除", - "@removeFromSpace": {}, - "pleaseEnterRecoveryKeyDescription": "古いメッセージを解除するには、以前のセッションで生成されたリカバリーキーを入力してください。リカバリーキーはパスワードではありません。", - "@pleaseEnterRecoveryKeyDescription": {}, - "videoWithSize": "ビデオ ({size})", - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "openChat": "チャットを開く", - "@openChat": {}, - "experimentalVideoCalls": "実験的なビデオ通話", - "@experimentalVideoCalls": {}, - "emailOrUsername": "メールアドレスまたはユーザー名", - "@emailOrUsername": {}, - "switchToAccount": "アカウント {number} に切り替える", - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "nextAccount": "次のアカウント", - "@nextAccount": {}, - "youAcceptedTheInvitation": "👍 招待を承諾しました", - "@youAcceptedTheInvitation": {}, - "errorAddingWidget": "ウィジェットの追加中にエラーが発生しました。", - "@errorAddingWidget": {}, - "widgetNameError": "表示名を入力してください。", - "@widgetNameError": {}, - "youUnbannedUser": "{user} の禁止を解除しました", - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "youInvitedBy": "📩 {user} から招待されました", - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "youKicked": "👞 {user} をキックしました", - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "youKickedAndBanned": "🙅 {user} をキックしてブロックしました", - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "storeInAppleKeyChain": "Apple KeyChainに保存", - "@storeInAppleKeyChain": {}, - "storeInAndroidKeystore": "Android KeyStoreに保存する", - "@storeInAndroidKeystore": {}, - "storeInSecureStorageDescription": "このデバイスの安全なストレージにリカバリーキーを保存。", - "@storeInSecureStorageDescription": {}, - "unlockOldMessages": "古いメッセージのロックを解除する", - "@unlockOldMessages": {}, - "callingAccount": "通話アカウント", - "@callingAccount": {}, - "callingPermissions": "通話の権限", - "@callingPermissions": {}, - "screenSharingTitle": "画面共有", - "@screenSharingTitle": {}, - "foregroundServiceRunning": "この通知は、フォアグラウンド サービスの実行中に表示されます。", - "@foregroundServiceRunning": {}, - "custom": "カスタム", - "@custom": {}, - "countFiles": "{count}個のファイル", - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "storeSecurlyOnThisDevice": "このデバイスに安全に保管する", - "@storeSecurlyOnThisDevice": {}, - "whyIsThisMessageEncrypted": "このメッセージが読めない理由", - "@whyIsThisMessageEncrypted": {}, - "otherCallingPermissions": "マイク、カメラ、その他FluffyChatの権限", - "@otherCallingPermissions": {}, - "appearOnTopDetails": "アプリをトップに表示できるようにする(すでに通話アカウントとしてFluffychatを設定している場合は必要ありません)", - "@appearOnTopDetails": {}, - "dehydrateTorLong": "TOR ユーザーの場合、ウィンドウを閉じる前にセッションをエクスポートすることをお勧めします。", - "@dehydrateTorLong": {}, - "hydrateTorLong": "前回、TOR でセッションをエクスポートしましたか?すぐにインポートしてチャットを続けましょう。", - "@hydrateTorLong": {}, - "enableMultiAccounts": "(ベータ版) このデバイスで複数のアカウントを有効にする", - "@enableMultiAccounts": {}, - "pleaseEnterRecoveryKey": "リカバリーキーを入力してください。", - "@pleaseEnterRecoveryKey": {}, - "serverRequiresEmail": "このサーバーは、登録のためにメールアドレスを検証する必要があります。", - "@serverRequiresEmail": {}, - "sendSticker": "ステッカーを送る", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "同期中...お待ちください。", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "emojis": "絵文字", - "@emojis": {}, - "markAsRead": "既読にする", - "@markAsRead": {}, - "videoCallsBetaWarning": "ビデオ通話は、現在ベータ版であることにご注意ください。すべてのプラットフォームで期待通りに動作しない、あるいはまったく動作しない可能性があります。", - "@videoCallsBetaWarning": {}, - "confirmEventUnpin": "イベントの固定を完全に解除してもよろしいですか?", - "@confirmEventUnpin": {}, - "unsupportedAndroidVersion": "サポートされていないAndroidのバージョン", - "@unsupportedAndroidVersion": {}, - "user": "ユーザー", - "@user": {}, - "newGroup": "新しいグループ", - "@newGroup": {}, - "noBackupWarning": "警告!チャットのバックアップを有効にしないと、暗号化されたメッセージにアクセスできなくなります。ログアウトする前に、まずチャットのバックアップを有効にすることを強くお勧めします。", - "@noBackupWarning": {}, - "disableEncryptionWarning": "セキュリティ上の理由から、以前は暗号化が有効だったチャットで暗号化を無効にすることはできません。", - "@disableEncryptionWarning": {}, - "youInvitedUser": "📩 {user} を招待しました", - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "reactedWith": "{sender} が {reaction} で反応しました", - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "createNewSpace": "新しいスペース", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "widgetUrlError": "有効なURLではありません。", - "@widgetUrlError": {}, - "reportUser": "ユーザーを報告", - "@reportUser": {}, - "errorObtainingLocation": "位置情報の取得中にエラーが発生しました: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "pinMessage": "部屋にピン留めする", - "@pinMessage": {}, - "previousAccount": "前のアカウント", - "@previousAccount": {}, - "pleaseChoose": "選択してください", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "おっと!残念ながら、プッシュ通知の設定中にエラーが発生しました。", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "noOtherDevicesFound": "他のデバイスが見つかりません", - "@noOtherDevicesFound": {}, - "recoveryKeyLost": "リカバリーキーを紛失した場合", - "@recoveryKeyLost": {}, - "shareLocation": "位置情報の共有", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "time": "時間", - "@time": {}, - "sendAsText": "テキストとして送信", - "@sendAsText": { - "type": "text" - }, - "commandHint_googly": "ぎょろ目を送る", - "@commandHint_googly": {}, - "commandHint_hug": "ハグを送る", - "@commandHint_hug": {}, - "encryptThisChat": "このチャットを暗号化する", - "@encryptThisChat": {}, - "commandHint_markasdm": "ダイレクトメッセージの部屋としてマークする", - "@commandHint_markasdm": {}, - "commandHint_dm": "ダイレクトチャットを開始する\n暗号化を無効にするには、--no-encryptionを使用してください", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "commandHint_leave": "この部屋を退出", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_myroomavatar": "この部屋の写真を設定する (mxc-uriで)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "この部屋の表示名を設定する", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_plain": "書式設定されていないテキストを送信する", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "リアクションとして返信を送信する", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "dehydrateTor": "TOR ユーザー: セッションをエクスポート", - "@dehydrateTor": {}, - "hydrateTor": "TOR ユーザー: セッションのエクスポートをインポート", - "@hydrateTor": {}, - "locationDisabledNotice": "位置情報サービスが無効になっています。位置情報を共有できるようにするには、位置情報サービスを有効にしてください。", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "位置情報の権限が拒否されました。位置情報を共有できるように許可してください。", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "deviceKeys": "デバイスキー:", - "@deviceKeys": {}, - "sorryThatsNotPossible": "申し訳ありません...それは不可能です", - "@sorryThatsNotPossible": {}, - "wasDirectChatDisplayName": "空のチャット (以前は {oldDisplayName})", - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "doNotShowAgain": "今後表示しない", - "@doNotShowAgain": {}, - "hideUnimportantStateEvents": "重要でない状態イベントを非表示にする", - "@hideUnimportantStateEvents": {}, - "numChats": "{number} チャット", - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "allSpaces": "すべてのスペース", - "@allSpaces": {}, - "enterRoom": "部屋に入る", - "@enterRoom": {}, - "enterSpace": "スペースに入る", - "@enterSpace": {}, - "newSpace": "新しいスペース", - "@newSpace": {}, - "reopenChat": "チャットを再開する", - "@reopenChat": {}, - "signInWith": "{provider}でログイン", - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "signInWithPassword": "パスワードでログイン", - "@signInWithPassword": {}, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@dismiss": {}, - "@reportErrorDescription": {}, - "@indexedDbErrorLong": {}, - "@setColorTheme": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@unbanUserDescription": {}, - "@messagesStyle": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@noKeyForThisMessage": {}, - "@pushNotificationsNotAvailable": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@makeAdminDescription": {}, - "@saveKeyManuallyDescription": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@fileIsTooBigForServer": {}, - "@readUpToHere": {}, - "@optionalRedactReason": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@invalidInput": {}, - "@report": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@openLinkInBrowser": {}, - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "@importEmojis": {}, - "@noChatDescriptionYet": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@chatDescriptionHasBeenChanged": {}, - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@profileNotFound": {}, - "@jump": {}, - "@shareInviteLink": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@replace": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@invite": {} -} \ No newline at end of file + "@@locale": "ja", + "@@last_modified": "2021-08-14 12:41:09.978060", + "about": "このアプリについて", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "承諾する", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "👍{username}が招待を承諾しました", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "アカウント", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐{username}がエンドツーエンド暗号化を有効にしました", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Eメールを追加", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "admin": "管理者", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "エイリアス", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "すべて", + "@all": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName}は通話に出ました", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "誰でも参加できる", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "appLock": "アプリのロック", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "archive": "アーカイブ", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "ゲストユーザーの参加を許可する", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "これでよろしいですか?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "ログアウトしてよろしいですか?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "他の人を署名するためにはパスフレーズやリカバリーキーを入力してください。", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "{username}の検証リクエストを承認しますか?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerLoginTypesException": "ホームサーバーでサポートされているログインタイプ:\n{serverVersions}\nアプリがサポートしているログインタイプ:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "ホームサーバーでサポートされているバージョン:\n{serverVersions}\nアプリでは{supportedVersions}しかサポートされていません", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "チャットからBANする", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "BANされています", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username}が{targetName}をBANしました", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "デバイスをブロックする", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "ブロックしました", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "ボットメッセージ", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "キャンセル", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changeDeviceName": "デバイス名を変更", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username}がチャットアバターを変更しました", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username}がチャットの説明を「{description}」に変更しました", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username}がチャットの名前を「{chatname}」に変更しました", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username}がチャットの権限を変更しました", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username}が表示名を「{displayname}」に変更しました", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username}がゲストのアクセスルールを変更しました", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username}がゲストのアクセスルールを{rules}に変更しました", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username}が履歴の表示設定を変更しました", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username}が履歴の表示設定を{rules}に変更しました", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username}が参加ルールを変更しました", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username}が参加ルールを{joinRules}に変更しました", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username}がアバターを変更しました", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username}が部屋のエイリアスを変更しました", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username}が招待リンクを変更しました", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "パスワードを変更", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "ホームサーバーの変更", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "スタイルを変更する", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "グループの名前を変更する", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "暗号が破損しています", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "チャット", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "チャットのバックアップ", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "古いメッセージはリカバリーキーで保護されます。紛失しないようにご注意ください。", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "チャットの詳細", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chats": "チャット", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "強いパスワードを選択してください", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "アーカイブを消去", + "@clearArchive": {}, + "close": "閉じる", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "表示されている絵文字が他のデバイスで表示されているものと一致するか確認してください:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "表示されている数字が他のデバイスで表示されているものと一致するか確認してください:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "チャットの設定", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "確認", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "接続", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "連絡先に登録された人が招待されました", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "表示名を含んでいます", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "ユーザー名を含んでいます", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "サーバー管理者に通報されました", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "クリップボードにコピーされました", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "コピー", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "クリップボードにコピー", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "メッセージを解読できませんでした: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count}名の参加者", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "作成", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "💬 {username}がチャットを作成しました", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "currentlyActive": "現在アクティブです", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "ダーク", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{year}/{month}/{day}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "あなたのアカウントを無効化します。この操作は元に戻せません!よろしいですか?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "デフォルトの権限レベル", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "delete": "削除", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "アカウントの削除", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "メッセージの削除", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "デバイス", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "デバイスID", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "デバイス", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "ダイレクトチャット", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "表示名が変更されました", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "ファイルのダウンロード", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "編集", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "ブロックしたサーバーを編集", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "表示名を編集", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "ルームエイリアスを編集", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "部屋のアバターを編集する", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Emoteはすでに存在します!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "不正なEmoteショートコード!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "部屋のEmoteパック", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Emote設定", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Emoteショートコード", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Emoteショートコードと画像を選択してください!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "空のチャット", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "emoteをグローバルに有効にする", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "暗号化を有効にする", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "一度暗号化を有効にするともとに戻せません。よろしいですか?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encrypted": "暗号化", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryption": "暗号化", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "暗号化されていません", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName}は通話を切断しました", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "メールアドレスを入力してください", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "ホームサーバーを入力してください", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "すべての準備は完了しました!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "とても攻撃的", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "fileName": "ファイル名", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "フォントサイズ", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "進む", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "参加時点から閲覧可能", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "招待時点から閲覧可能", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "新規ルームへ", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "グループ", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "グループは公開されています", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "グループ", + "@groups": { + "type": "text", + "placeholders": {} + }, + "groupWith": "{displayname}とグループを作成する", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "ゲストは許可されていません", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "ゲストが許可されています", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{targetName}の招待を{username}が取り下げました", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "ヘルプ", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "編集済みイベントを非表示にする", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "不明なイベントを非表示にする", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "どのくらい攻撃的でしたか?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "アイデンティティ", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "無視する", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "無視されたユーザー", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "リンクをクリックしました", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "パスフレーズかリカバリーキーが間違っています", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "非攻撃的", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "連絡先から招待する", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "連絡先から{groupName}に招待する", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "招待されました", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "📩 {username} が {targetName} を招待しました", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "招待されたユーザーのみ", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "自分への招待", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: https://fluffychat.im \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "が入力しています…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} がチャットに参加しました", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "部屋に参加", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "👞 {username} は {targetName} をキックしました", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "🙅 {username} が {targetName} をキックしブロックしました", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "チャットからキックする", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "最終アクティブ: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "退室する", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "退室しました", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "ライセンス", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "ライト", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "あと{count}名参加者を読み込む", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "読み込み中…お待ちください。", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "更に読み込む…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "ログイン", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "{homeserver}にログインする", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "ログアウト", + "@logout": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "メンバーの変更", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "メンション", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "メッセージ", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "モデレータ", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "チャットのミュート", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "新規チャット", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 FluffyChatに新しいメッセージがあります", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "認証リクエスト!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "次へ", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "いいえ", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "サーバーに接続できません", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Emoteは見つかりませんでした😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "ルームを非公開にした後暗号化を有効にできます。", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "あなたのスマホにはGoogleサービスがないようですね。プライバシーを保護するための良い選択です!プッシュ通知を受け取るには https://microg.org/ または https://unifiedpush.org/ を使うことをお勧めします。", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "none": "なし", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "パスワードを回復する方法をまだ追加していません。", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "noPermission": "権限がありません", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "部屋は見つかりませんでした…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "通知", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "このアカウントでは通知が有効です", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count}人が入力中…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "offensive": "攻撃的", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "オフライン", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "オンライン", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "オンライン鍵バックアップは使用されています", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "おっと、何かがうまくいきませんでした…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "アプリを開いてメッセージを確認してください", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "カメラを開く", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "participant": "参加者", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "パスフレーズかリカバリーキー", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "パスワード", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "パスワードを忘れた", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "パスワードが変更されました", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "パスワードリカバリー", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "人々", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "画像を選択してください", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "ピン", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "{fileName}を再生する", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAPasscode": "パスコードを選んでください", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "メールのリンクから進めてください。", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "アプリのロック用に4桁の数字を入力してください。空欄の場合は無効になります。", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "パスワードを入力してください", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "PINを入力してください", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "ユーザー名を入力してください", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "ウェブサイトにあるやり方を見てから次をタップしてください。", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "プライバシー", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "公開された部屋", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "pushRules": "ルールを追加する", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "reason": "理由", + "@reason": { + "type": "text", + "placeholders": {} + }, + "recording": "録音中", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username}がイベントを編集しました", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactMessage": "メッセージを書く", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "reject": "拒否", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username}は招待を拒否しました", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "再参加", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "消去", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "他のデバイスをすべて削除", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "{username}によって削除されました", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "デバイスの削除", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "チャットからのブロックを解除する", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "リッチメッセージをレンダリングする", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "部屋を新しいバージョンに変更する", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "返信", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "メッセージを通報", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "権限を要求する", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "部屋はアップグレードされました", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "ルームバージョン", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "search": "検索", + "@search": { + "type": "text", + "placeholders": {} + }, + "security": "セキュリティ", + "@security": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "{username}が既読", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "send": "送信", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "メッセージを送信", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "音声の送信", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "ファイルを送信", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "画像の送信", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "メッセージを送る", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "オリジナルの送信", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "動画を送信", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "📁 {username}はファイルを送信しました", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "🎤 {username}は音声を送信しました", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "🖼️ {username}は画像を送信しました", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "😊 {username}はステッカーを送信しました", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "🎥 {username}は動画を送信しました", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName}は通話情報を送信しました", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setAsCanonicalAlias": "メインエイリアスに設定", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "カスタムエモートの設定", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "招待リンクを設定する", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "権限レベルをセット", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setStatus": "ステータスの設定", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "設定", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "共有", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username}は現在地を共有しました", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "showPassword": "パスワードを表示", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "skip": "スキップ", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "ソースコード", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName}は通話を開始しました", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "status": "ステータス", + "@status": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "お元気ですか?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "送信", + "@submit": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "システム", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "違います", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "一致しています", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "お気に入り切り替え", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "ミュート切り替え", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "既読/未読にマーク", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "リクエストが多すぎます。また後で試してみてください!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "違うデバイスから移行する", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "送信し直してみる", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "不在", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username}が{targetName}のBANを解除しました", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "デバイスをブロック解除する", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "未知デバイス", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "未知の暗号化アルゴリズム", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "未知のイベント'{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unmuteChat": "チャットをミュート解除する", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "ピンを外す", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1件の未読メッセージ} other{{unreadCount}件の未読メッセージ}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "userAndOthersAreTyping": "{username}と他{count}名が入力しています…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username}と{username2}が入力しています…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username}が入力しています…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "🚪 {username}はチャットから退室しました", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "ユーザー名", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username}は{type}イベントを送信しました", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verified": "検証済み", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verify": "確認", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "確認を始める", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "確認が完了しました!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "他のアカウントを確認中", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "videoCall": "音声通話", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "チャット履歴の表示", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "すべての参加者が閲覧可能", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "すべての人が閲覧可能", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "ボイスメッセージ", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "パートナーのリクエスト承諾待ちです...", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "パートナーの絵文字承諾待ちです...", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "パートナーの数字承諾待ちです…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "壁紙", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "警告!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "あなたにメールを送信しました", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "誰がどの操作を実行できるか", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "誰がこのチャットに入れますか", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "これを通報する理由", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "チャットのバックアップを消去して、新しいリカバリーキーを作りますか?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "これらのアドレスを使用すると、パスワードを回復することができます。", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "メッセージを入力してください…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "はい", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "あなた", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "あなたはもうこのチャットの参加者ではありません", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "チャットからBANされてしまいました", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "あなたの公開鍵", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "allChats": "すべて会話", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "スペースに追加", + "@addToSpace": {}, + "cantOpenUri": "URIが開けません {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "repeatPassword": "パスワードを繰り返そ", + "@repeatPassword": {}, + "autoplayImages": "GIFを自動的に再生する", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "yourChatBackupHasBeenSetUp": "チャットバックアップを設定ました。", + "@yourChatBackupHasBeenSetUp": {}, + "sendOnEnter": "Enterで送信", + "@sendOnEnter": {}, + "changeYourAvatar": "アバタるを変化しする", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "このスペースにチャットが追加されました", + "@chatHasBeenAddedToThisSpace": {}, + "commandHint_ban": "このユーザーを禁止する", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "キャッシュをクリアする", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandInvalid": "コマンドが無効", + "@commandInvalid": { + "type": "text" + }, + "commandHint_create": "空のグループチャットを作成\n暗号化を無効にするには、--no-encryption を使用", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "セッションを破棄", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "confirmMatrixId": "アカウントを削除するには、Matrix IDを確認してください。", + "@confirmMatrixId": {}, + "commandHint_markasgroup": "グループとしてマーク", + "@commandHint_markasgroup": {}, + "commandHint_join": "指定した部屋に参加", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_send": "テキストを送信", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "hydrate": "バックアップファイルから復元", + "@hydrate": {}, + "commandHint_html": "HTML形式のテキストを送信", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "指定したユーザーをこの部屋に招待", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandMissing": "{command} はコマンドではありません。", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "oneClientLoggedOut": "クライアントの 1つがログアウトしました", + "@oneClientLoggedOut": {}, + "addAccount": "アカウントを追加", + "@addAccount": {}, + "editBundlesForAccount": "このアカウントのバンドルを編集", + "@editBundlesForAccount": {}, + "unverified": "未検証", + "@unverified": {}, + "sender": "送信者", + "@sender": {}, + "placeCall": "電話をかける", + "@placeCall": {}, + "voiceCall": "音声通話", + "@voiceCall": {}, + "unsupportedAndroidVersionLong": "この機能を利用するには、より新しいAndroidのバージョンが必要です。アップデートまたはLineage OSのサポートをご確認ください。", + "@unsupportedAndroidVersionLong": {}, + "widgetVideo": "動画", + "@widgetVideo": {}, + "widgetName": "名称", + "@widgetName": {}, + "widgetCustom": "カスタム", + "@widgetCustom": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "dehydrateWarning": "この操作は元に戻せません。バックアップファイルを安全に保存してください。", + "@dehydrateWarning": {}, + "dehydrate": "セッションのエクスポートとデバイスの消去", + "@dehydrate": {}, + "messageType": "メッセージの種類", + "@messageType": {}, + "start": "開始", + "@start": {}, + "publish": "公開", + "@publish": {}, + "indexedDbErrorTitle": "プライベートモードに関する問題", + "@indexedDbErrorTitle": {}, + "addWidget": "ウィジェットを追加", + "@addWidget": {}, + "youBannedUser": "{user} を禁止しました", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "youJoinedTheChat": "チャットに参加しました", + "@youJoinedTheChat": {}, + "youHaveWithdrawnTheInvitationFor": "{user} への招待を取り下げました", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "users": "ユーザー", + "@users": {}, + "youRejectedTheInvitation": "招待を拒否しました", + "@youRejectedTheInvitation": {}, + "screenSharingDetail": "FuffyChatで画面を共有しています", + "@screenSharingDetail": {}, + "homeserver": "ホームサーバー", + "@homeserver": {}, + "scanQrCode": "QRコードをスキャン", + "@scanQrCode": {}, + "obtainingLocation": "位置情報を取得しています…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "addToBundle": "バンドルに追加", + "@addToBundle": {}, + "removeFromBundle": "このバンドルから削除", + "@removeFromBundle": {}, + "bundleName": "バンドル名", + "@bundleName": {}, + "noMatrixServer": "{server1} はMatrixのサーバーではありません。代わりに {server2} を使用しますか?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "openVideoCamera": "ビデオ用にカメラを開く", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "link": "リンク", + "@link": {}, + "or": "または", + "@or": { + "type": "text", + "placeholders": {} + }, + "register": "登録", + "@register": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "アバターを削除する", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "saveFile": "ファイルを保存", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "recoveryKey": "リカバリーキー", + "@recoveryKey": {}, + "singlesignon": "シングルサインオン", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "スペースは公開されています", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "spaceName": "スペース名", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "startFirstChat": "最初のチャットを開始する", + "@startFirstChat": {}, + "addToSpaceDescription": "このチャットを追加するスペースを選択してください。", + "@addToSpaceDescription": {}, + "messageInfo": "メッセージの情報", + "@messageInfo": {}, + "openGallery": "ギャラリーを開く", + "@openGallery": {}, + "removeFromSpace": "スペースから削除", + "@removeFromSpace": {}, + "pleaseEnterRecoveryKeyDescription": "古いメッセージを解除するには、以前のセッションで生成されたリカバリーキーを入力してください。リカバリーキーはパスワードではありません。", + "@pleaseEnterRecoveryKeyDescription": {}, + "videoWithSize": "ビデオ ({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "openChat": "チャットを開く", + "@openChat": {}, + "experimentalVideoCalls": "実験的なビデオ通話", + "@experimentalVideoCalls": {}, + "emailOrUsername": "メールアドレスまたはユーザー名", + "@emailOrUsername": {}, + "switchToAccount": "アカウント {number} に切り替える", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "nextAccount": "次のアカウント", + "@nextAccount": {}, + "youAcceptedTheInvitation": "👍 招待を承諾しました", + "@youAcceptedTheInvitation": {}, + "errorAddingWidget": "ウィジェットの追加中にエラーが発生しました。", + "@errorAddingWidget": {}, + "widgetNameError": "表示名を入力してください。", + "@widgetNameError": {}, + "youUnbannedUser": "{user} の禁止を解除しました", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "youInvitedBy": "📩 {user} から招待されました", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "youKicked": "👞 {user} をキックしました", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "youKickedAndBanned": "🙅 {user} をキックしてブロックしました", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "storeInAppleKeyChain": "Apple KeyChainに保存", + "@storeInAppleKeyChain": {}, + "storeInAndroidKeystore": "Android KeyStoreに保存する", + "@storeInAndroidKeystore": {}, + "storeInSecureStorageDescription": "このデバイスの安全なストレージにリカバリーキーを保存。", + "@storeInSecureStorageDescription": {}, + "unlockOldMessages": "古いメッセージのロックを解除する", + "@unlockOldMessages": {}, + "callingAccount": "通話アカウント", + "@callingAccount": {}, + "callingPermissions": "通話の権限", + "@callingPermissions": {}, + "screenSharingTitle": "画面共有", + "@screenSharingTitle": {}, + "foregroundServiceRunning": "この通知は、フォアグラウンド サービスの実行中に表示されます。", + "@foregroundServiceRunning": {}, + "custom": "カスタム", + "@custom": {}, + "countFiles": "{count}個のファイル", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "storeSecurlyOnThisDevice": "このデバイスに安全に保管する", + "@storeSecurlyOnThisDevice": {}, + "whyIsThisMessageEncrypted": "このメッセージが読めない理由", + "@whyIsThisMessageEncrypted": {}, + "otherCallingPermissions": "マイク、カメラ、その他FluffyChatの権限", + "@otherCallingPermissions": {}, + "appearOnTopDetails": "アプリをトップに表示できるようにする(すでに通話アカウントとしてFluffychatを設定している場合は必要ありません)", + "@appearOnTopDetails": {}, + "dehydrateTorLong": "TOR ユーザーの場合、ウィンドウを閉じる前にセッションをエクスポートすることをお勧めします。", + "@dehydrateTorLong": {}, + "hydrateTorLong": "前回、TOR でセッションをエクスポートしましたか?すぐにインポートしてチャットを続けましょう。", + "@hydrateTorLong": {}, + "enableMultiAccounts": "(ベータ版) このデバイスで複数のアカウントを有効にする", + "@enableMultiAccounts": {}, + "pleaseEnterRecoveryKey": "リカバリーキーを入力してください。", + "@pleaseEnterRecoveryKey": {}, + "serverRequiresEmail": "このサーバーは、登録のためにメールアドレスを検証する必要があります。", + "@serverRequiresEmail": {}, + "sendSticker": "ステッカーを送る", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "同期中...お待ちください。", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "emojis": "絵文字", + "@emojis": {}, + "markAsRead": "既読にする", + "@markAsRead": {}, + "videoCallsBetaWarning": "ビデオ通話は、現在ベータ版であることにご注意ください。すべてのプラットフォームで期待通りに動作しない、あるいはまったく動作しない可能性があります。", + "@videoCallsBetaWarning": {}, + "confirmEventUnpin": "イベントの固定を完全に解除してもよろしいですか?", + "@confirmEventUnpin": {}, + "unsupportedAndroidVersion": "サポートされていないAndroidのバージョン", + "@unsupportedAndroidVersion": {}, + "user": "ユーザー", + "@user": {}, + "newGroup": "新しいグループ", + "@newGroup": {}, + "noBackupWarning": "警告!チャットのバックアップを有効にしないと、暗号化されたメッセージにアクセスできなくなります。ログアウトする前に、まずチャットのバックアップを有効にすることを強くお勧めします。", + "@noBackupWarning": {}, + "disableEncryptionWarning": "セキュリティ上の理由から、以前は暗号化が有効だったチャットで暗号化を無効にすることはできません。", + "@disableEncryptionWarning": {}, + "youInvitedUser": "📩 {user} を招待しました", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "reactedWith": "{sender} が {reaction} で反応しました", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "createNewSpace": "新しいスペース", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "widgetUrlError": "有効なURLではありません。", + "@widgetUrlError": {}, + "reportUser": "ユーザーを報告", + "@reportUser": {}, + "errorObtainingLocation": "位置情報の取得中にエラーが発生しました: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "pinMessage": "部屋にピン留めする", + "@pinMessage": {}, + "previousAccount": "前のアカウント", + "@previousAccount": {}, + "pleaseChoose": "選択してください", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "おっと!残念ながら、プッシュ通知の設定中にエラーが発生しました。", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "noOtherDevicesFound": "他のデバイスが見つかりません", + "@noOtherDevicesFound": {}, + "recoveryKeyLost": "リカバリーキーを紛失した場合", + "@recoveryKeyLost": {}, + "shareLocation": "位置情報の共有", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "time": "時間", + "@time": {}, + "sendAsText": "テキストとして送信", + "@sendAsText": { + "type": "text" + }, + "commandHint_googly": "ぎょろ目を送る", + "@commandHint_googly": {}, + "commandHint_hug": "ハグを送る", + "@commandHint_hug": {}, + "encryptThisChat": "このチャットを暗号化する", + "@encryptThisChat": {}, + "commandHint_markasdm": "ダイレクトメッセージの部屋としてマークする", + "@commandHint_markasdm": {}, + "commandHint_dm": "ダイレクトチャットを開始する\n暗号化を無効にするには、--no-encryptionを使用してください", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "commandHint_leave": "この部屋を退出", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "この部屋の写真を設定する (mxc-uriで)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "この部屋の表示名を設定する", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "書式設定されていないテキストを送信する", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "リアクションとして返信を送信する", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "dehydrateTor": "TOR ユーザー: セッションをエクスポート", + "@dehydrateTor": {}, + "hydrateTor": "TOR ユーザー: セッションのエクスポートをインポート", + "@hydrateTor": {}, + "locationDisabledNotice": "位置情報サービスが無効になっています。位置情報を共有できるようにするには、位置情報サービスを有効にしてください。", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "位置情報の権限が拒否されました。位置情報を共有できるように許可してください。", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "deviceKeys": "デバイスキー:", + "@deviceKeys": {}, + "sorryThatsNotPossible": "申し訳ありません...それは不可能です", + "@sorryThatsNotPossible": {}, + "wasDirectChatDisplayName": "空のチャット (以前は {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "text", + "placeholders": { + "oldDisplayName": {} + } + }, + "doNotShowAgain": "今後表示しない", + "@doNotShowAgain": {}, + "hideUnimportantStateEvents": "重要でない状態イベントを非表示にする", + "@hideUnimportantStateEvents": {}, + "numChats": "{number} チャット", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "allSpaces": "すべてのスペース", + "@allSpaces": {}, + "enterRoom": "部屋に入る", + "@enterRoom": {}, + "enterSpace": "スペースに入る", + "@enterSpace": {}, + "newSpace": "新しいスペース", + "@newSpace": {}, + "reopenChat": "チャットを再開する", + "@reopenChat": {}, + "signInWith": "{provider}でログイン", + "@signInWith": { + "type": "text", + "placeholders": { + "provider": {} + } + }, + "signInWithPassword": "パスワードでログイン", + "@signInWithPassword": {} +} From e81b14a8085c137ccb0a47de49cc12da73c29265 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:39 +0000 Subject: [PATCH 064/106] Translated using Weblate (Esperanto) Currently translated at 49.6% (324 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eo/ --- assets/l10n/intl_eo.arb | 4138 ++++++++++++++++++--------------------- 1 file changed, 1905 insertions(+), 2233 deletions(-) diff --git a/assets/l10n/intl_eo.arb b/assets/l10n/intl_eo.arb index 2cda9beb9..872e72ec0 100644 --- a/assets/l10n/intl_eo.arb +++ b/assets/l10n/intl_eo.arb @@ -1,2234 +1,1906 @@ { - "@@last_modified": "2021-08-14 12:41:10.107750", - "about": "Prio", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Akcepti", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} akceptis la inviton", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Konto", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} aktivigis tutvojan ĉifradon", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Aldoni retpoŝtadreson", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "admin": "Administranto", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "kromnomo", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "Ĉio", - "@all": { - "type": "text", - "placeholders": {} - }, - "allChats": "Ĉiuj babiloj", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} respondis la vokon", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Ĉiu ajn povas aliĝi", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "appLock": "Ŝlosado", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "archive": "Arĥivo", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Ĉu gastoj rajtas aliĝi", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Ĉu vi certas?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "Ĉu vi certe volas adiaŭi?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Por ke vi povu kontroli (subskribi) la alian personon, bonvolu enigi pasfrazon de via sekreta deponejo aŭ vian rehavan ŝlosilon.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Ĉu akcepti ĉi tiun kontrolpeton de {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerLoginTypesException": "La hejmservilo subtenas la jenajn specojn de salutoj:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "La hejmservilo subtenas la jenajn version de la specifaĵo:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "Forbari de babilo", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Forbarita", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} forbaris uzanton {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Bloki aparaton", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Blokita", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Mesaĝoj de robotoj", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "Nuligi", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "Ne povis malfermi URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changeDeviceName": "Ŝanĝi nomon de aparato", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} ŝanĝis bildon de la babilo", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} ŝanĝis priskribon de la babilo al: «{description}»", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} ŝanĝis nomon de la babilo al: «{chatname}»", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username} ŝanĝis permesojn pri la babilo", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} ŝanĝis sian prezentan nomon al: {username}", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} ŝanĝis regulojn pri aliro de gastoj", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} ŝanĝis regulojn pri aliro de gastoj al: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "{username} ŝanĝis videblecon de la historio", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} ŝanĝis videblecon de la historio al: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} ŝanĝis regulojn pri aliĝado", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} ŝanĝis regulojn pri aliĝado al: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} ŝanĝis sian profilbildon", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} ŝanĝis la kromnomojn de la ĉambro", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} ŝanĝis la invitan ligilon", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Ŝanĝi pasvorton", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Ŝanĝi hejmservilon", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Ŝanĝu la haŭton", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Ŝanĝi nomon de la grupo", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Ŝanĝi vian profilbildon", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "La ĉifrado estas difektita", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "Babilo", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Savkopiado de babilo", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "Via savkopio de babilo estas sekurigita per sekureca ŝlosilo. Bonvolu certigi, ke vi ne perdos ĝin.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Detaloj pri babilo", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chats": "Babiloj", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Elektu fortan pasvorton", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Vakigi arĥivon", - "@clearArchive": {}, - "close": "Fermi", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Forbari la donitan uzanton de ĉi tiu ĉambro", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_html": "Sendi tekston formatan je HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Inviti la donitan uzanton al ĉi tiu ĉambro", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Aliĝi al la donita ĉambro", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Forigi la donitan uzanton de ĉi tiu ĉambro", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Foriri de ĉi tiu ĉambro", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_me": "Priskribu vian agon", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_myroomavatar": "Agordi vian profilbildon por ĉi tiu ĉambro (laŭ mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "Agordi vian prezentan nomon en ĉi tiu ĉambro", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Agordi povnivelon de la donita uzanto (implicite: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Sendi senformatan tekston", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Sendi respondon kiel reagon", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_unban": "Malforbari la donitan uzanton de ĉi tiu ĉambro", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandInvalid": "Nevalida ordono", - "@commandInvalid": { - "type": "text" - }, - "commandMissing": "{command} ne estas ordono.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "compareEmojiMatch": "Komparu kaj certigu, ke la jenaj bildosignoj samas en ambaŭ aparatoj:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Komparu kaj certigu, ke la jenaj numeroj samas en ambaŭ aparatoj:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Agordi babilon", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "Konfirmi", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "Konektiĝi", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Kontakto invitiĝis al la grupo", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Enhavas prezentan nomon", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Enhavas uzantonomon", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "La enhavo raportiĝis al la administrantoj de la servilo", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Kopiite al tondujo", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Kopii", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Kopii al tondujo", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Ne povis malĉifri mesaĝon: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} partoprenantoj", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Krei", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "{username} kreis la babilon", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "createNewSpace": "Nova aro", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Nun aktiva", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Malhela", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{day}a de la {month}a", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{day}a de la {month}a de {year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "Ĉi tio malaktivigos vian konton de uzanto. Ne eblas tion malfari! Ĉu certe vi certas?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Norma nivelo de permesoj", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "delete": "Forigi", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Forigi konton", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Forigi mesaĝon", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Aparato", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "Identigilo de aparato", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Aparatoj", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "Rektaj babiloj", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Prezenta nomo ŝanĝiĝis", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Elŝuti dosieron", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "Redakti", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Redakti blokitajn servilojn", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Redakti prezentan nomon", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Ŝanĝi kromnomojn de ĉambro", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Redakti bildon de ĉambro", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Mieneto jam ekzistas!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Nevalida mallongigo de mieneto!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Mienetaroj por la ĉambro", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Agordoj pri mienetoj", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Mallongigo de mieneto", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Vi devas elekti mallongigon de mieneto kaj bildon!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Malplena babilo", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Ŝalti mienetaron ĉie", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Ŝalti ĉifradon", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Vi ne povos malŝalti la ĉifradon. Ĉu vi certas?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Ĉifrite", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryption": "Ĉifrado", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "Ĉifrado ne estas ŝaltita", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} finis la vokon", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "Enigu retpoŝtadreson", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "Enigu vian hejmservilon", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "Eraris akirado de loko: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "everythingReady": "Ĉio pretas!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Tre ofenda", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "fileName": "Dosiernomo", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Grandeco de tiparo", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "Plusendi", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "Ekde aliĝo", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "Ekde la invito", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Iri al la nova ĉambro", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Grupo", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "Grupo estas publika", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "Grupoj", - "@groups": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Grupo kun {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "Gastoj estas malpermesitaj", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Gastoj povas aliĝi", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} nuligis la inviton por {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Helpo", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Kaŝi obskurigitajn eventojn", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Kaŝi nekonatajn eventojn", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "Kiel ofenda estas ĉi tiu enhavo?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "Identigilo", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "Identeco", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Malatenti", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Malatentitaj uzantoj", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Mi klakis la ligilon", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Neĝusta pasfrazo aŭ rehava ŝlosilo", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Neofenda", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Inviti kontakton", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Inviti kontakton al {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "Invitita", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "{username} invitis uzanton {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "Nur invititoj", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Invito por mi", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} invitis vin al FluffyChat. \n1. Instalu la aplikaĵon FluffyChat: https://fluffychat.im \n2. Registriĝu aŭ salutu \n3. Malfermu la invitan ligilon: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "tajpas…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "{username} aliĝis al la babilo", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "Aliĝi al ĉambro", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "{username} forpelis uzanton {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "{username} forpelis kaj forbaris uzanton {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "Forpeli de babilo", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Lastafoje aktiva: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Foriri", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "Foriris de la ĉambro", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Permesilo", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Hela", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Enlegi {count} pliajn partoprenantojn", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "Enlegante… bonvolu atendi.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Enlegi pli…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "login": "Saluti", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Saluti servilon {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "Adiaŭi", - "@logout": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Ŝanĝoj de anoj", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "Mencii", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "Mesaĝoj", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "Reguligisto", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Silentigi babilon", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Bonvolu scii, ke vi ankoraŭ bezonas la programon Pantalaimon por uzi tutvojan ĉifradon.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "Nova babilo", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "Nova mesaĝo en FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Nova kontrolpeto!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Sekva", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "Ne", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Neniu konekto al la servilo", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Neniuj mienetoj troviĝis. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Vi nur povas aktivigi ĉifradon kiam la ĉambro ne plu estas publike alirebla.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Ŝajnas, ke via telefono ne havas servojn de Google. Tio estas bona decido por via privateco! Por ricevadi pasivajn sciigojn en FluffyChat, ni rekomendas, ke vi uzu la https://microg.org/ aŭ https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "none": "Neniu", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Vi ankoraŭ ne aldonis manieron rehavi vian pasvorton.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Neniu permeso", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Neniuj ĉambroj troviĝis…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "Sciigoj", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Sciigoj ŝaltiĝis por ĉi tiu konto", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count} uzantoj tajpas…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "obtainingLocation": "Akirante lokon…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "offensive": "Ofenda", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "Eksterrete", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "bone", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "Enrete", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "Enreta savkopiado de ŝlosiloj estas ŝaltita", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Oj! Bedaŭrinde eraris la agordado de pasivaj sciigoj.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Oj! Io misokazis…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Malfermu la aplikaĵon por legi mesaĝojn", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Malfermi fotilon", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "or": "Aŭ", - "@or": { - "type": "text", - "placeholders": {} - }, - "participant": "Partoprenanto", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "pasfrazo aŭ rehava ŝlosilo", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Pasvorto", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Forgesita pasvorto", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Pasvorto ŝanĝiĝis", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Rehavo de pasvorto", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "Personoj", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Elekti bildon", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Fiksi", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "Ludi {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChoose": "Bonvolu elekti", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Bonvolu elekti paskodon", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Bonvolu klaki la ligilon en la retletero kaj pluiĝi.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Bonvolu enigi 4 ciferojn, aŭ nenion por malŝalti ŝlosadon de la aplikaĵo.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Bonvolu enigi vian pasvorton", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Bonvolu enigi vian personan identigan numeron", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Bonvolu enigi vian uzantonomon", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Bonvolu sekvi la instrukciojn de la retejo kaj tuŝetu al «Sekva».", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Privateco", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Publikaj ĉambroj", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Reguloj de pasivaj sciigoj", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "reason": "Kialo", - "@reason": { - "type": "text", - "placeholders": {} - }, - "recording": "Registrante", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} obskurigis eventon", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactMessage": "Obskurigi mesaĝon", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "register": "Registriĝi", - "@register": { - "type": "text", - "placeholders": {} - }, - "reject": "Rifuzi", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} rifuzis la inviton", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "Ree aliĝi", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Forigi", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Forigi ĉiujn aliajn aparatojn", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Forigita de {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Forigi aparaton", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Malforbari", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Forigi vian profilbildon", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Bildigi riĉforman enhavon de mesaĝoj", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Anstataŭigi ĉambron per nova versio", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "Respondi", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Raporti mesaĝon", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Peti permeson", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "Ĉambro gradaltiĝis", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Versio de ĉambro", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Konservi dosieron", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "search": "Serĉi", - "@search": { - "type": "text", - "placeholders": {} - }, - "security": "Sekureco", - "@security": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Vidita de {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "send": "Sendi", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Sendi mesaĝon", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Sendi sondosieron", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Sendi dosieron", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Sendi bildon", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Sendi mesaĝojn", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Sendi originalon", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Sendi glumarkon", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Sendi filmon", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "{username} sendis dosieron", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "{username} sendis sondosieron", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "{username} sendis bildon", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "{username} sendis glumarkon", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "{username} sendis filmon", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName} sendis informojn pri voko", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setAsCanonicalAlias": "Agordi kiel ĉefan kromnomon", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "Agordi proprajn mienetojn", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Agordi invitan ligilon", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Agordi nivelon de permesoj", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Agordi staton", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "Agordoj", - "@settings": { - "type": "text", - "placeholders": {} - }, - "share": "Konigi", - "@share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} konigis sian lokon", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "shareLocation": "Konigi lokon", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "showPassword": "Montri pasvorton", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Ununura saluto", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "skip": "Preterpasi", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Fontkodo", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "Aro estas publika", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Nomo de aro", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName} komencis vokon", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "status": "Stato", - "@status": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "Kiel vi fartas?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "Sendi", - "@submit": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "Spegulante… Bonvolu atendi.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "Sistema", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "Ili ne akordas", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Ili akordas", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Baskuli elstarigon", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Basklui silentigon", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Baskuli legitecon", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Tro multaj petoj. Bonvolu reprovi poste!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Transporti de alia aparato", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Reprovi sendi", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Nedisponeble", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} malforbaris uzanton {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unblockDevice": "Malbloki aparaton", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Nekonata aparato", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Nekonata ĉifra algoritmo", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Nekonata evento «{type}»", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "unmuteChat": "Malsilentigi babilon", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Malfiksi", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{1 nelegita babilo} other{{unreadCount} nelegitaj babiloj}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "userAndOthersAreTyping": "{username} kaj {count} aliaj tajpas…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username} kaj {username2} tajpas…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username} tajpas…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userLeftTheChat": "{username} foriris de la babilo", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "username": "Uzantonomo", - "@username": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "{username} sendis eventon de speco {type}", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "verified": "Kontrolita", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verify": "Kontroli", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Komenci kontrolon", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "Vi sukcese kontrolis!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Kontrolante alian konton", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Vidvoko", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Videbleco de historio de la babilo", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Videbla al ĉiuj partoprenantoj", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Videbla al ĉiuj", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Voĉmesaĝo", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Atendante konfirmon de peto de la kunulo…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Atendante akcepton de la bildosignoj de la kunulo…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Atendante akcepton de la numeroj, de la kunulo…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Fonbildo", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "Averto!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Ni sendis retleteron al vi", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Kiu povas kion", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Kiu rajtas aliĝi al ĉi tiu grupo", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "Kial vi volas tion ĉi raporti?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Ĉu forviŝi la savkopion de via babilo por krei novan sekurecan ŝlosilon?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Per tiuj ĉi adresoj vi povas rehavi vian pasvorton.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Skribi mesaĝon…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "Jes", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "Vi", - "@you": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Vi ne plu partoprenas ĉi tiun babilon", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Vi estas forbarita de ĉi tiu babilo", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Via publika ŝlosilo", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "sendAsText": "Sendi kiel tekston", - "@sendAsText": { - "type": "text" - }, - "noMatrixServer": "{server1} ne estas matriksa servilo, eble provu anstataŭe servilon {server2}?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "commandHint_send": "Sendi tekston", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "chatHasBeenAddedToThisSpace": "Babilo aldoniĝis al ĉi tiu aro", - "@chatHasBeenAddedToThisSpace": {}, - "autoplayImages": "Memage ludi movbildajn glumarkojn kaj mienetojn", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "addToSpace": "Aldoni al aro", - "@addToSpace": {}, - "homeserver": "Hejmservilo", - "@homeserver": {}, - "sendOnEnter": "Sendi per eniga klavo", - "@sendOnEnter": {}, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@reportErrorDescription": {}, - "@addAccount": {}, - "@unsupportedAndroidVersion": {}, - "@widgetJitsi": {}, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@oneClientLoggedOut": {}, - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "@nextAccount": {}, - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@youAcceptedTheInvitation": {}, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@link": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@previousAccount": {}, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@widgetNameError": {}, - "@addToBundle": {}, - "@addWidget": {}, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@commandHint_markasgroup": {}, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "@saveKeyManuallyDescription": {}, - "@editBundlesForAccount": {}, - "@whyIsThisMessageEncrypted": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@dehydrateWarning": {}, - "@noOtherDevicesFound": {}, - "@yourChatBackupHasBeenSetUp": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@videoCallsBetaWarning": {}, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "@repeatPassword": {}, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@optionalRedactReason": {}, - "@dehydrate": {}, - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@reportUser": {}, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@recoveryKey": {}, - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "@invalidInput": {}, - "@dehydrateTorLong": {}, - "@doNotShowAgain": {}, - "@report": {}, - "@unverified": {}, - "@serverRequiresEmail": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@removeFromBundle": {}, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@newGroup": {}, - "@bundleName": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@roomUpgradeDescription": {}, - "@scanQrCode": {}, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@widgetName": {}, - "@errorAddingWidget": {}, - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "@commandHint_hug": {}, - "@replace": {}, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@newSpace": {}, - "@emojis": {}, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@hydrateTorLong": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@pinMessage": {}, - "@invite": {}, - "@enableMultiAccounts": {}, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@placeCall": {} -} \ No newline at end of file + "@@last_modified": "2021-08-14 12:41:10.107750", + "about": "Prio", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Akcepti", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} akceptis la inviton", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Konto", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} aktivigis tutvojan ĉifradon", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Aldoni retpoŝtadreson", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "admin": "Administranto", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "kromnomo", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "Ĉio", + "@all": { + "type": "text", + "placeholders": {} + }, + "allChats": "Ĉiuj babiloj", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} respondis la vokon", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Ĉiu ajn povas aliĝi", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "appLock": "Ŝlosado", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "archive": "Arĥivo", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ĉu gastoj rajtas aliĝi", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ĉu vi certas?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ĉu vi certe volas adiaŭi?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Por ke vi povu kontroli (subskribi) la alian personon, bonvolu enigi pasfrazon de via sekreta deponejo aŭ vian rehavan ŝlosilon.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Ĉu akcepti ĉi tiun kontrolpeton de {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerLoginTypesException": "La hejmservilo subtenas la jenajn specojn de salutoj:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "La hejmservilo subtenas la jenajn version de la specifaĵo:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "Forbari de babilo", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Forbarita", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} forbaris uzanton {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Bloki aparaton", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Blokita", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Mesaĝoj de robotoj", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "Nuligi", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "Ne povis malfermi URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changeDeviceName": "Ŝanĝi nomon de aparato", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ŝanĝis bildon de la babilo", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} ŝanĝis priskribon de la babilo al: «{description}»", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} ŝanĝis nomon de la babilo al: «{chatname}»", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} ŝanĝis permesojn pri la babilo", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} ŝanĝis sian prezentan nomon al: {username}", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} ŝanĝis regulojn pri aliro de gastoj", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} ŝanĝis regulojn pri aliro de gastoj al: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} ŝanĝis videblecon de la historio", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} ŝanĝis videblecon de la historio al: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} ŝanĝis regulojn pri aliĝado", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} ŝanĝis regulojn pri aliĝado al: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} ŝanĝis sian profilbildon", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} ŝanĝis la kromnomojn de la ĉambro", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} ŝanĝis la invitan ligilon", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Ŝanĝi pasvorton", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Ŝanĝi hejmservilon", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Ŝanĝu la haŭton", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Ŝanĝi nomon de la grupo", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Ŝanĝi vian profilbildon", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "La ĉifrado estas difektita", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Babilo", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Savkopiado de babilo", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "Via savkopio de babilo estas sekurigita per sekureca ŝlosilo. Bonvolu certigi, ke vi ne perdos ĝin.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Detaloj pri babilo", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chats": "Babiloj", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Elektu fortan pasvorton", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Vakigi arĥivon", + "@clearArchive": {}, + "close": "Fermi", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Forbari la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Sendi tekston formatan je HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Inviti la donitan uzanton al ĉi tiu ĉambro", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Aliĝi al la donita ĉambro", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Forigi la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Foriri de ĉi tiu ĉambro", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Priskribu vian agon", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Agordi vian profilbildon por ĉi tiu ĉambro (laŭ mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Agordi vian prezentan nomon en ĉi tiu ĉambro", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Agordi povnivelon de la donita uzanto (implicite: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Sendi senformatan tekston", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Sendi respondon kiel reagon", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_unban": "Malforbari la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Nevalida ordono", + "@commandInvalid": { + "type": "text" + }, + "commandMissing": "{command} ne estas ordono.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Komparu kaj certigu, ke la jenaj bildosignoj samas en ambaŭ aparatoj:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Komparu kaj certigu, ke la jenaj numeroj samas en ambaŭ aparatoj:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Agordi babilon", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "Konfirmi", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Konektiĝi", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakto invitiĝis al la grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Enhavas prezentan nomon", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Enhavas uzantonomon", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "La enhavo raportiĝis al la administrantoj de la servilo", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Kopiite al tondujo", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopii", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Kopii al tondujo", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Ne povis malĉifri mesaĝon: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} partoprenantoj", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Krei", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} kreis la babilon", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewSpace": "Nova aro", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Nun aktiva", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Malhela", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}a de la {month}a", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}a de la {month}a de {year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Ĉi tio malaktivigos vian konton de uzanto. Ne eblas tion malfari! Ĉu certe vi certas?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Norma nivelo de permesoj", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "delete": "Forigi", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Forigi konton", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Forigi mesaĝon", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Aparato", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "Identigilo de aparato", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Aparatoj", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "Rektaj babiloj", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Prezenta nomo ŝanĝiĝis", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Elŝuti dosieron", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "Redakti", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Redakti blokitajn servilojn", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Redakti prezentan nomon", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Ŝanĝi kromnomojn de ĉambro", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Redakti bildon de ĉambro", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Mieneto jam ekzistas!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Nevalida mallongigo de mieneto!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Mienetaroj por la ĉambro", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Agordoj pri mienetoj", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Mallongigo de mieneto", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Vi devas elekti mallongigon de mieneto kaj bildon!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Malplena babilo", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Ŝalti mienetaron ĉie", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Ŝalti ĉifradon", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Vi ne povos malŝalti la ĉifradon. Ĉu vi certas?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Ĉifrite", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryption": "Ĉifrado", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Ĉifrado ne estas ŝaltita", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} finis la vokon", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "Enigu retpoŝtadreson", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Enigu vian hejmservilon", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "Eraris akirado de loko: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "everythingReady": "Ĉio pretas!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Tre ofenda", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "fileName": "Dosiernomo", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Grandeco de tiparo", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "Plusendi", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "Ekde aliĝo", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "Ekde la invito", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Iri al la nova ĉambro", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Grupo estas publika", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "Grupoj", + "@groups": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Grupo kun {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "Gastoj estas malpermesitaj", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Gastoj povas aliĝi", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} nuligis la inviton por {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Helpo", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Kaŝi obskurigitajn eventojn", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Kaŝi nekonatajn eventojn", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kiel ofenda estas ĉi tiu enhavo?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "Identigilo", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Identeco", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Malatenti", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Malatentitaj uzantoj", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Mi klakis la ligilon", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Neĝusta pasfrazo aŭ rehava ŝlosilo", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Neofenda", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Inviti kontakton", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Inviti kontakton al {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Invitita", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "{username} invitis uzanton {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Nur invititoj", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Invito por mi", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} invitis vin al FluffyChat. \n1. Instalu la aplikaĵon FluffyChat: https://fluffychat.im \n2. Registriĝu aŭ salutu \n3. Malfermu la invitan ligilon: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "tajpas…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} aliĝis al la babilo", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Aliĝi al ĉambro", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} forpelis uzanton {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} forpelis kaj forbaris uzanton {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Forpeli de babilo", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Lastafoje aktiva: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Foriri", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Foriris de la ĉambro", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Permesilo", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Hela", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Enlegi {count} pliajn partoprenantojn", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Enlegante… bonvolu atendi.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Enlegi pli…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Saluti", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Saluti servilon {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Adiaŭi", + "@logout": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Ŝanĝoj de anoj", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "Mencii", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "Mesaĝoj", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "Reguligisto", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Silentigi babilon", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Bonvolu scii, ke vi ankoraŭ bezonas la programon Pantalaimon por uzi tutvojan ĉifradon.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "Nova babilo", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nova mesaĝo en FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Nova kontrolpeto!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Sekva", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Neniu konekto al la servilo", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Neniuj mienetoj troviĝis. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Vi nur povas aktivigi ĉifradon kiam la ĉambro ne plu estas publike alirebla.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Ŝajnas, ke via telefono ne havas servojn de Google. Tio estas bona decido por via privateco! Por ricevadi pasivajn sciigojn en FluffyChat, ni rekomendas, ke vi uzu la https://microg.org/ aŭ https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "none": "Neniu", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Vi ankoraŭ ne aldonis manieron rehavi vian pasvorton.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Neniu permeso", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Neniuj ĉambroj troviĝis…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "Sciigoj", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Sciigoj ŝaltiĝis por ĉi tiu konto", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count} uzantoj tajpas…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "obtainingLocation": "Akirante lokon…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "offensive": "Ofenda", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "Eksterrete", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "bone", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "Enrete", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Enreta savkopiado de ŝlosiloj estas ŝaltita", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Oj! Bedaŭrinde eraris la agordado de pasivaj sciigoj.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oj! Io misokazis…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Malfermu la aplikaĵon por legi mesaĝojn", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Malfermi fotilon", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "or": "Aŭ", + "@or": { + "type": "text", + "placeholders": {} + }, + "participant": "Partoprenanto", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "pasfrazo aŭ rehava ŝlosilo", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Pasvorto", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Forgesita pasvorto", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Pasvorto ŝanĝiĝis", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Rehavo de pasvorto", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "Personoj", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Elekti bildon", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Fiksi", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Ludi {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChoose": "Bonvolu elekti", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Bonvolu elekti paskodon", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Bonvolu klaki la ligilon en la retletero kaj pluiĝi.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Bonvolu enigi 4 ciferojn, aŭ nenion por malŝalti ŝlosadon de la aplikaĵo.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Bonvolu enigi vian pasvorton", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Bonvolu enigi vian personan identigan numeron", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Bonvolu enigi vian uzantonomon", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Bonvolu sekvi la instrukciojn de la retejo kaj tuŝetu al «Sekva».", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Privateco", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Publikaj ĉambroj", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Reguloj de pasivaj sciigoj", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "reason": "Kialo", + "@reason": { + "type": "text", + "placeholders": {} + }, + "recording": "Registrante", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} obskurigis eventon", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactMessage": "Obskurigi mesaĝon", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "register": "Registriĝi", + "@register": { + "type": "text", + "placeholders": {} + }, + "reject": "Rifuzi", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rifuzis la inviton", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Ree aliĝi", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Forigi", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Forigi ĉiujn aliajn aparatojn", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Forigita de {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Forigi aparaton", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Malforbari", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Forigi vian profilbildon", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Bildigi riĉforman enhavon de mesaĝoj", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Anstataŭigi ĉambron per nova versio", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "Respondi", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Raporti mesaĝon", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Peti permeson", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Ĉambro gradaltiĝis", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Versio de ĉambro", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Konservi dosieron", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "search": "Serĉi", + "@search": { + "type": "text", + "placeholders": {} + }, + "security": "Sekureco", + "@security": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Vidita de {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "send": "Sendi", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Sendi mesaĝon", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Sendi sondosieron", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Sendi dosieron", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Sendi bildon", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Sendi mesaĝojn", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Sendi originalon", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Sendi glumarkon", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Sendi filmon", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} sendis dosieron", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} sendis sondosieron", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} sendis bildon", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} sendis glumarkon", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} sendis filmon", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} sendis informojn pri voko", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setAsCanonicalAlias": "Agordi kiel ĉefan kromnomon", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "Agordi proprajn mienetojn", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Agordi invitan ligilon", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Agordi nivelon de permesoj", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Agordi staton", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Agordoj", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Konigi", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} konigis sian lokon", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "shareLocation": "Konigi lokon", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "showPassword": "Montri pasvorton", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Ununura saluto", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "skip": "Preterpasi", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Fontkodo", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "Aro estas publika", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Nomo de aro", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} komencis vokon", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "status": "Stato", + "@status": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Kiel vi fartas?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Sendi", + "@submit": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "Spegulante… Bonvolu atendi.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Ili ne akordas", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Ili akordas", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Baskuli elstarigon", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Basklui silentigon", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Baskuli legitecon", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Tro multaj petoj. Bonvolu reprovi poste!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transporti de alia aparato", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Reprovi sendi", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Nedisponeble", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} malforbaris uzanton {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "Malbloki aparaton", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Nekonata aparato", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nekonata ĉifra algoritmo", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Nekonata evento «{type}»", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unmuteChat": "Malsilentigi babilon", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Malfiksi", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 nelegita babilo} other{{unreadCount} nelegitaj babiloj}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "userAndOthersAreTyping": "{username} kaj {count} aliaj tajpas…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} kaj {username2} tajpas…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} tajpas…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "{username} foriris de la babilo", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Uzantonomo", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} sendis eventon de speco {type}", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verified": "Kontrolita", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verify": "Kontroli", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Komenci kontrolon", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "Vi sukcese kontrolis!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Kontrolante alian konton", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Vidvoko", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Videbleco de historio de la babilo", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Videbla al ĉiuj partoprenantoj", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Videbla al ĉiuj", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Voĉmesaĝo", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Atendante konfirmon de peto de la kunulo…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Atendante akcepton de la bildosignoj de la kunulo…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Atendante akcepton de la numeroj, de la kunulo…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Fonbildo", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "Averto!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Ni sendis retleteron al vi", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kiu povas kion", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kiu rajtas aliĝi al ĉi tiu grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kial vi volas tion ĉi raporti?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Ĉu forviŝi la savkopion de via babilo por krei novan sekurecan ŝlosilon?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Per tiuj ĉi adresoj vi povas rehavi vian pasvorton.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Skribi mesaĝon…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Jes", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Vi", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Vi ne plu partoprenas ĉi tiun babilon", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Vi estas forbarita de ĉi tiu babilo", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Via publika ŝlosilo", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "sendAsText": "Sendi kiel tekston", + "@sendAsText": { + "type": "text" + }, + "noMatrixServer": "{server1} ne estas matriksa servilo, eble provu anstataŭe servilon {server2}?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "commandHint_send": "Sendi tekston", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "chatHasBeenAddedToThisSpace": "Babilo aldoniĝis al ĉi tiu aro", + "@chatHasBeenAddedToThisSpace": {}, + "autoplayImages": "Memage ludi movbildajn glumarkojn kaj mienetojn", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "addToSpace": "Aldoni al aro", + "@addToSpace": {}, + "homeserver": "Hejmservilo", + "@homeserver": {}, + "sendOnEnter": "Sendi per eniga klavo", + "@sendOnEnter": {} +} From e5dd2e246d76ade8a82593670a2fe920430414ab Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:46 +0000 Subject: [PATCH 065/106] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 41.8% (273 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nb_NO/ --- assets/l10n/intl_nb.arb | 533 +--------------------------------------- 1 file changed, 1 insertion(+), 532 deletions(-) diff --git a/assets/l10n/intl_nb.arb b/assets/l10n/intl_nb.arb index 660517c76..3835e0b76 100644 --- a/assets/l10n/intl_nb.arb +++ b/assets/l10n/intl_nb.arb @@ -1648,537 +1648,6 @@ "type": "text", "placeholders": {} }, - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@chats": { - "type": "text", - "placeholders": {} - }, - "@widgetVideo": {}, - "@dismiss": {}, - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "@reportErrorDescription": {}, - "@addAccount": {}, - "@chatHasBeenAddedToThisSpace": {}, - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "@unsupportedAndroidVersion": {}, - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "@widgetJitsi": {}, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@oneClientLoggedOut": {}, - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "@nextAccount": {}, - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "@youAcceptedTheInvitation": {}, - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@link": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@previousAccount": {}, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@widgetNameError": {}, - "@addToBundle": {}, - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "@addWidget": {}, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_markasgroup": {}, - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "@saveKeyManuallyDescription": {}, - "@editBundlesForAccount": {}, - "@whyIsThisMessageEncrypted": {}, - "@setChatDescription": {}, - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "@importFromZipFile": {}, - "@or": { - "type": "text", - "placeholders": {} - }, - "@dehydrateWarning": {}, - "@noOtherDevicesFound": {}, - "@yourChatBackupHasBeenSetUp": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@videoCallsBetaWarning": {}, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "@homeserver": {}, - "@people": { - "type": "text", - "placeholders": {} - }, - "@verified": { - "type": "text", - "placeholders": {} - }, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@register": { - "type": "text", - "placeholders": {} - }, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@optionalRedactReason": {}, - "@dehydrate": {}, - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "@sendAsText": { - "type": "text" - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@commandInvalid": { - "type": "text" - }, - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "@reportUser": {}, - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "@redactMessageDescription": {}, - "@recoveryKey": {}, - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "@invalidInput": {}, - "@dehydrateTorLong": {}, - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "@doNotShowAgain": {}, - "@report": {}, - "@unverified": {}, - "@serverRequiresEmail": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@addChatDescription": {}, - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@clearArchive": {}, - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@removeFromBundle": {}, - "@confirmMatrixId": {}, - "@learnMore": {}, "notAnImage": "Ikke en bildefil.", - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@newGroup": {}, - "@bundleName": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "@roomUpgradeDescription": {}, - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "@scanQrCode": {}, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@widgetName": {}, - "@errorAddingWidget": {}, - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "@commandHint_hug": {}, - "@replace": {}, - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "@newSpace": {}, - "@emojis": {}, - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@hydrateTorLong": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@pinMessage": {}, - "@invite": {}, - "@enableMultiAccounts": {}, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "@placeCall": {} + "@notAnImage": {} } From a7c1a760c787c63f9876cc39766f4115b25fd9f0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:48 +0000 Subject: [PATCH 066/106] Translated using Weblate (Romanian) Currently translated at 74.3% (485 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ro/ --- assets/l10n/intl_ro.arb | 4677 +++++++++++++++++++-------------------- 1 file changed, 2302 insertions(+), 2375 deletions(-) diff --git a/assets/l10n/intl_ro.arb b/assets/l10n/intl_ro.arb index 00b17e74c..4715436e7 100644 --- a/assets/l10n/intl_ro.arb +++ b/assets/l10n/intl_ro.arb @@ -1,2376 +1,2303 @@ { - "@@last_modified": "2021-08-14 12:41:09.918296", - "about": "Despre", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Accept", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} a aceptat invitați", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Cont", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} a activat criptarea end-to-end", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "admin": "Administrator", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "poreclă", - "@alias": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} a acceptat apelul", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Oricine se poate alătura", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "archive": "Arhivă", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Vizitatorii \"guest\" se pot alătura", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Ești sigur?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Pentru a putea conecta cealaltă persoană, te rog introdu parola sau cheia ta de recuperare.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Accepți cererea de verificare de la {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "banFromChat": "Interzis din conversație", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Interzis", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} a interzis pe {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Blochează dispozitiv", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "cancel": "Anulează", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "changeDeviceName": "Schimbă numele dispozitiv", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} a schimbat poza conversați", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} a schimbat descrierea grupului în '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} a schimbat porecla în '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "commandHint_unban": "Dezinterziceți utilizatorul ales din această cameră", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "deviceId": "ID-ul Dispozitiv", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Dispozitive", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "Chaturi directe", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} a terminat apelul", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterYourHomeserver": "Introduceți homeserverul vostru", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Grup cu {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "howOffensiveIsThisContent": "Cât de ofensiv este acest conținut?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "kickFromChat": "Dați afară din chat", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "rejoin": "Reintrați", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "sentCallInformations": "{senderName} a trimis informație de apel", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "showPassword": "Afișați parola", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "no": "Nu", - "@no": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Trimiteți mesaje", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "submit": "Trimiteți", - "@submit": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{Un chat necitit} other{{unreadCount} chaturi necitite}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "verifySuccess": "A reușit verificarea!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Mesaj vocal", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Imagine de fundal", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "reactedWith": "{sender} a reacționat cu {reaction}", - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "changePassword": "Schimbați parola", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "next": "Următor", - "@next": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Fără conexiune la server", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Nu ați adăugat încă nici un mod de recuperare pentru parola voastră.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "notifications": "Notificări", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "openVideoCamera": "Deschideți camera pentru video", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Deschideți aplicația să citiți mesajele", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Deschideți camera", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Eliminat de {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Eliminați dispozitivul", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "share": "Partajați", - "@share": { - "type": "text", - "placeholders": {} - }, - "shareLocation": "Partajați locația", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "skip": "Săriți peste", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Codul surs", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "Spațiul este public", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Numele spațiului", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Comutați favoritul", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "unblockDevice": "Debloca dispozitiv", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Dispozitiv necunoscut", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "verify": "Verificați", - "@verify": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "V-am trimis un email", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Nu mai participați în acest chat", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Cheia voastră publică", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "addToSpaceDescription": "Alegeți un spațiu în care să adăugați acest chat.", - "@addToSpaceDescription": {}, - "placeCall": "Faceți apel", - "@placeCall": {}, - "voiceCall": "Apel vocal", - "@voiceCall": {}, - "unsupportedAndroidVersion": "Versiune de Android nesuportat", - "@unsupportedAndroidVersion": {}, - "previousAccount": "Contul anterior", - "@previousAccount": {}, - "userIsTyping": "{username} tastează…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "widgetCustom": "Personalizat", - "@widgetCustom": {}, - "screenSharingTitle": "partajarea de ecran", - "@screenSharingTitle": {}, - "newGroup": "Grup nou", - "@newGroup": {}, - "changedTheRoomInvitationLink": "{username} a schimbat linkul de invitație", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "chat": "Chat", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chats": "Chaturi", - "@chats": { - "type": "text", - "placeholders": {} - }, - "invited": "Invitat", - "@invited": { - "type": "text", - "placeholders": {} - }, - "login": "Conectați-vă", - "@login": { - "type": "text", - "placeholders": {} - }, - "online": "Online", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "Backup de cheie online este activat", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "removeFromBundle": "Stergeți din acest pachet", - "@removeFromBundle": {}, - "enableMultiAccounts": "(BETA) Activați multiple conturi pe acest dispozitiv", - "@enableMultiAccounts": {}, - "participant": "Participant", - "@participant": { - "type": "text", - "placeholders": {} - }, - "openInMaps": "Deschideți pe hartă", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Vă rugăm să introduceți pinul vostru", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "privacy": "Confidențialitate", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Regulile Push", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "recording": "Înregistrare", - "@recording": { - "type": "text", - "placeholders": {} - }, - "register": "Înregistrați-vă", - "@register": { - "type": "text", - "placeholders": {} - }, - "redactMessage": "Redactați mesaj", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Versiunea camerei", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "security": "Securitate", - "@security": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Trimiteți fișier", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Stabiliți status", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "Configurări", - "@settings": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Invitați pentru mine", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} a retras invitația pentru {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Ajutor", - "@help": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Algoritm de criptare necunoscut", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unmuteChat": "Dezamuțați chat", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Anulează fixarea", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} a ridicat interzicerea lui {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "openChat": "Deschideți Chat", - "@openChat": {}, - "emailOrUsername": "Email sau nume de utilizator", - "@emailOrUsername": {}, - "youBannedUser": "Ați interzis pe {user}", - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "fileIsTooBigForServer": "Serverul reportează că fișierul este prea mare să fie trimis.", - "@fileIsTooBigForServer": {}, - "widgetName": "Nume", - "@widgetName": {}, - "sorryThatsNotPossible": "Scuze... acest nu este posibil", - "@sorryThatsNotPossible": {}, - "enableEncryptionWarning": "Activând criptare, nu mai puteți să o dezactivați în viitor. Sunteți sigur?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "commandMissing": "{command} nu este o comandă.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "status": "Status", - "@status": { - "type": "text", - "placeholders": {} - }, - "connect": "Conectați", - "@connect": { - "type": "text", - "placeholders": {} - }, - "you": "Voi", - "@you": { - "type": "text", - "placeholders": {} - }, - "start": "Începeți", - "@start": {}, - "videoCallsBetaWarning": "Vă rugăm să luați notă că apeluri video sunt în beta. Se poate că nu funcționează normal sau de loc pe fie care platformă.", - "@videoCallsBetaWarning": {}, - "pinMessage": "Fixați în cameră", - "@pinMessage": {}, - "wasDirectChatDisplayName": "Chat gol (a fost {oldDisplayName})", - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "pleaseClickOnLink": "Vă rugăm să deschideți linkul din email și apoi să procedați.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "reportUser": "Reportați utilizator", - "@reportUser": {}, - "encryptionNotEnabled": "Criptare nu e activată", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Camere Publice", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "addToBundle": "Adăugați în pachet", - "@addToBundle": {}, - "theyDontMatch": "Nu sunt asemănători", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "loadingPleaseWait": "Încărcând... Vă rugăm să așteptați.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "dateWithoutYear": "{month}-{day}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "theyMatch": "Sunt asemănători", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Comutați amuțeștarea", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "scanQrCode": "Scanați cod QR", - "@scanQrCode": {}, - "addAccount": "Adăugați cont", - "@addAccount": {}, - "experimentalVideoCalls": "Apeluri video experimentale", - "@experimentalVideoCalls": {}, - "confirmEventUnpin": "Sunteți sigur că doriți să anulați permanent fixarea evenimentului?", - "@confirmEventUnpin": {}, - "emojis": "Emoji-uri", - "@emojis": {}, - "switchToAccount": "Schimbați la contul {number}", - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "nextAccount": "Contul următor", - "@nextAccount": {}, - "indexedDbErrorTitle": "Probleme cu modul privat", - "@indexedDbErrorTitle": {}, - "users": "Utilizatori", - "@users": {}, - "startFirstChat": "Începeți primul chatul vostru", - "@startFirstChat": {}, - "callingPermissions": "Permisiuni de apel", - "@callingPermissions": {}, - "callingAccount": "Cont de apel", - "@callingAccount": {}, - "foregroundServiceRunning": "Această notificare apare când serviciul de foreground rulează.", - "@foregroundServiceRunning": {}, - "callingAccountDetails": "Permite FluffyChat să folosească aplicația de apeluri nativă android.", - "@callingAccountDetails": {}, - "appearOnTop": "Apare deasupra", - "@appearOnTop": {}, - "appearOnTopDetails": "Permite aplicația să apare deasupra (nu este necesar dacă aveți FluffyChat stabilit ca cont de apeluri)", - "@appearOnTopDetails": {}, - "currentlyActive": "Activ acum", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Conține displayname", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "isTyping": "tastează…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Backup de chat", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "repeatPassword": "Repetați parola", - "@repeatPassword": {}, - "changeTheme": "Schimbați tema aplicației", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "Chatul a fost adăugat la acest spațiu", - "@chatHasBeenAddedToThisSpace": {}, - "clearArchive": "Ștergeți arhiva", - "@clearArchive": {}, - "commandHint_markasdm": "Marcați ca cameră de mesaje directe", - "@commandHint_markasdm": {}, - "commandHint_markasgroup": "Marcați ca grup", - "@commandHint_markasgroup": {}, - "commandHint_ban": "Interziceți acesul utilizatorului ales din această cameră", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_clearcache": "Ștergeți cache", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandHint_create": "Creați un grup de chat gol\nFolosiți --no-encryption să dezactivați criptare", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_discardsession": "Renunțați sesiunea", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "commandHint_kick": "Dați afară pe utilizatorul ales din această cameră", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Renunțați la această cameră", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_myroomavatar": "Alegeți un avatar pentru această cameră (foloșește mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "Alegeți un displayname pentru această cameră", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Stabiliți nivelul de putere a utilizatorul ales (implicit: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Trimiteți text simplu/neformatat", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Trimiteți răspuns ca reacție", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_send": "Trimiteți text", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandInvalid": "Comandă nevalibilă", - "@commandInvalid": { - "type": "text" - }, - "compareEmojiMatch": "Vă rugăm să comparați emoji-urile", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Vă rugăm să comparați numerele", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Dezcriptarea mesajului a eșuat: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "create": "Creați", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "💬{username} a creat chatul", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "createNewSpace": "Spațiu nou", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "dateWithYear": "{year}-{month}-{day}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "allRooms": "Toate chaturi de grup", - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "forward": "Înainte", - "@forward": { - "type": "text", - "placeholders": {} - }, - "groups": "Grupuri", - "@groups": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Ascunde evenimente redactate", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Ascunde evenimente necunoscute", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "identity": "Identitate", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Ignorați", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Utilizatori ignorați", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Am făcut click pe link", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Parolă sau cheie de recuperare incorectă", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Inofensiv", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Invitați contact", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Invitați contact la {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "inviteText": "{username} v-a invitat la FluffyChat.\n1. Instalați FluffyChat: https://fluffychat.im\n2. Înregistrați-vă sau conectați-vă\n3. Deschideți invitația: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "joinedTheChat": "👋{username} a intrat în chat", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "kicked": "👞{username} a dat afară pe {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "lastActiveAgo": "Ultima dată activ: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Renunțați", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "A plecat din chat", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Permis", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Luminat", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Încărcați încă mai {count} participanți", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "dehydrate": "Exportați sesiunea și ștergeți dispozitivul", - "@dehydrate": {}, - "dehydrateTor": "Utilizatori de TOR: Exportați sesiunea", - "@dehydrateTor": {}, - "dehydrateTorLong": "Pentru utilizatori de TOR, este recomandat să exportați sesiunea înainte de a închideți fereastra.", - "@dehydrateTorLong": {}, - "hydrateTor": "Utilizatori TOR: Importați sesiune exportată", - "@hydrateTor": {}, - "hydrateTorLong": "Ați exportat sesiunea vostră ultima dată pe TOR? Importați-o repede și continuați să conversați.", - "@hydrateTorLong": {}, - "hydrate": "Restaurați din fișier backup", - "@hydrate": {}, - "loadMore": "Încarcă mai multe…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "logout": "Deconectați-vă", - "@logout": { - "type": "text", - "placeholders": {} - }, - "mention": "Menționați", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "Mesaje", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "Moderator", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Nu s-a găsit nici un emote. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Criptare nu poate fi activată până când camera este accesibilă public.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "none": "Niciunul", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Fără permisie", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Nici o cameră nu s-a găsit…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Notificări activate pentru acest cont", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "obtainingLocation": "Obținând locație…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "offline": "Offline", - "@offline": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Ups, ceva a eșuat…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "reject": "Respingeți", - "@reject": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Revoca interzicerea din chat", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "Camera a fost actualizată", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "Stabiliți emoji-uri personalizate", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Stabiliți nivelul de permisii", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Autentificare unică", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName} a început un apel", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "statusExampleMessage": "Ce faceți?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Prea multe cereri. Vă rugăm să încercați din nou mai tărziu!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Evenimet necunoscut '{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "verified": "Verificat", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Începeți verificare", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Apel video", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Vizibilitatea istoria chatului", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Vizibil pentru toți participanți", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Așteptând pe partenerul să accepte emoji-ul…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Așteptând pe partenerul să accepte numerele…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "warning": "Avertizment!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Cine poate face care acțiune", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Cine se poate alătura la acest grup", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "De ce doriți să reportați acest conținut?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Ștergeți backup-ul vostru de chat să creați o nouă cheie de recuperare?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Cu acestea adrese puteți să vă recuperați parola.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Ați fost interzis din acest chat", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "messageInfo": "Info mesajului", - "@messageInfo": {}, - "time": "Timp", - "@time": {}, - "messageType": "Fel de mesaj", - "@messageType": {}, - "sender": "Trimițător", - "@sender": {}, - "openGallery": "Deschideți galeria", - "@openGallery": {}, - "removeFromSpace": "Eliminați din spațiu", - "@removeFromSpace": {}, - "publish": "Publicați", - "@publish": {}, - "videoWithSize": "Video ({size})", - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "unsupportedAndroidVersionLong": "Această funcție are nevoie de o versiune de Android mai nouă. Vă rugăm să verificați dacă sunt actualizări sau suport de la Lineage OS.", - "@unsupportedAndroidVersionLong": {}, - "dismiss": "Respingeți", - "@dismiss": {}, - "widgetVideo": "Video", - "@widgetVideo": {}, - "widgetEtherpad": "Notiță text", - "@widgetEtherpad": {}, - "widgetJitsi": "Jitsi Meet", - "@widgetJitsi": {}, - "widgetUrlError": "Acest URL nu este valibil.", - "@widgetUrlError": {}, - "widgetNameError": "Vă rugăm să introduceți un nume de afișare.", - "@widgetNameError": {}, - "errorAddingWidget": "Adăugarea widget-ului a eșuat.", - "@errorAddingWidget": {}, - "youRejectedTheInvitation": "Ați respins invitația", - "@youRejectedTheInvitation": {}, - "youJoinedTheChat": "Va-ți alăturat la chat", - "@youJoinedTheChat": {}, - "youAcceptedTheInvitation": "👍Ați acceptat invitația", - "@youAcceptedTheInvitation": {}, - "youHaveWithdrawnTheInvitationFor": "Ați retras invitația pentru {user}", - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "youInvitedBy": "📩Ați fost invitat de {user}", - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "unlockOldMessages": "Deblocați mesajele vechi", - "@unlockOldMessages": {}, - "youInvitedUser": "📩Ați invitat pe {user}", - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "youKicked": "👞Ați dat afară pe {user}", - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "youUnbannedUser": "Ați ridicat interzicerea lui {user}", - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "storeInAndroidKeystore": "Stoca în Android KeyStore", - "@storeInAndroidKeystore": {}, - "user": "Utilizator", - "@user": {}, - "custom": "Personalizat", - "@custom": {}, - "screenSharingDetail": "Partajați ecranul în FluffyChat", - "@screenSharingDetail": {}, - "storeSecurlyOnThisDevice": "Stoca sigur pe acest dispozitiv", - "@storeSecurlyOnThisDevice": {}, - "otherCallingPermissions": "Microfon, cameră și alte permisiuni lui FluffyChat", - "@otherCallingPermissions": {}, - "whyIsThisMessageEncrypted": "De ce este acest mesaj ilizibil?", - "@whyIsThisMessageEncrypted": {}, - "newSpace": "Spațiu nou", - "@newSpace": {}, - "enterSpace": "Intrați în spațiu", - "@enterSpace": {}, - "enterRoom": "Intrați în cameră", - "@enterRoom": {}, - "allSpaces": "Toate spațiile", - "@allSpaces": {}, - "numChats": "{number} chaturi", - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "hideUnimportantStateEvents": "Ascundeți evenimente de stare neimportante", - "@hideUnimportantStateEvents": {}, - "doNotShowAgain": "Nu se mai apară din nou", - "@doNotShowAgain": {}, - "newSpaceDescription": "Spațiile vă permit să vă consolidați chaturile și să stabiliți comunități private sau publice.", - "@newSpaceDescription": {}, - "encryptThisChat": "Criptați acest chat", - "@encryptThisChat": {}, - "disableEncryptionWarning": "Pentru motive de securitate, nu este posibil să dezactivați criptarea unui chat în care criptare este activată.", - "@disableEncryptionWarning": {}, - "noBackupWarning": "Avertisment! Fără să activați backup de chat, veți pierde accesul la mesajele voastre criptate. E foarte recomandat să activați backup de chat înainte să vă deconectați.", - "@noBackupWarning": {}, - "noOtherDevicesFound": "Nu s-a găsit alte dispozitive", - "@noOtherDevicesFound": {}, - "fileHasBeenSavedAt": "Fișierul a fost salvat la {path}", - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "jump": "Săriți", - "@jump": {}, - "report": "reportați", - "@report": {}, - "jumpToLastReadMessage": "Săriți la ultimul citit mesaj", - "@jumpToLastReadMessage": {}, - "memberChanges": "Schimbări de membri", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Musafiri pot să se alăture", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "fileName": "Nume de fișier", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Mărimea fontului", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "De la alăturare", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "De la invitația", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Mergeți la camera nouă", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Grup", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "Grupul este public", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "guestsAreForbidden": "Musafiri sunt interziși", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "kickedAndBanned": "🙅{username} a dat afară și a interzis pe {targetName} din cameră", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "dehydrateWarning": "Această actiune nu poate fi anulată. Asigurați-vă că păstrați fișierul backup.", - "@dehydrateWarning": {}, - "joinRoom": "Alăturați la cameră", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Conectați-vă la {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "locationDisabledNotice": "Servicile de locație sunt dezactivate. Vă rugăm să le activați să împărțiți locația voastră.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Se pare că nu aveți serviciile google pe dispozitivul vostru. Această decizie este bună pentru confidențialitatea voastră! Să primiți notificari push în FluffyChat vă recomandăm https://microg.org/ sau https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} nu este server matrix, înlocuiți cu {server2}?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "numUsersTyping": "{count} utilizatori tastează…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "offensive": "Ofensiv", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "confirm": "Confirmați", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "or": "Sau", - "@or": { - "type": "text", - "placeholders": {} - }, - "serverRequiresEmail": "Acest server trebuie să valideze emailul vostru pentru înregistrare.", - "@serverRequiresEmail": {}, - "waitingPartnerAcceptRequest": "Așteptând pe partenerul să accepte cererea…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Întunecat", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} sa partajat locația", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "setInvitationLink": "Stabiliți linkul de invitație", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Transfera de la alt dispozitiv", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "Sincronizează... Vă rugăm să așteptați.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "Sistem", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Marcați Citit/Necitit", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Încercați să trimiteți din nou", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Nedisponibil", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "userAndUserAreTyping": "{username} și {username2} tastează…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userLeftTheChat": "🚪{username} a plecat din chat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userAndOthersAreTyping": "{username} și {count} alți tastează…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userSentUnknownEvent": "{username} a trimis un eveniment {type}", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "unverified": "Neverificat", - "@unverified": {}, - "verifyTitle": "Verificând celălalt cont", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Vizibil pentru toți", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "readUpToHere": "Citit până aici", - "@readUpToHere": {}, - "changedTheHistoryVisibility": "{username} a schimbat vizibilitatea istoriei chatului", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "copy": "Copiați", - "@copy": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Displayname a fost schimbat", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "invitedUsersOnly": "Numai utilizatori invitați", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Configurați chat", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Copiat în clipboard", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "device": "Dispozitiv", - "@device": { - "type": "text", - "placeholders": {} - }, - "username": "Nume de utilizator", - "@username": { - "type": "text", - "placeholders": {} - }, - "sentAnAudio": "🎤{username} a trimis audio", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAFile": "📁{username} a trimis un fișier", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "indexedDbErrorLong": "Stocarea de mesaje nu este activat implicit în modul privat.\nVă rugăm să vizitați\n- about:config\n- stabiliți dom.indexedDB.privateBrowsing.enabled la true\nAstfel, nu este posibil să folosiți FluffyChat.", - "@indexedDbErrorLong": {}, - "addWidget": "Adăugați widget", - "@addWidget": {}, - "locationPermissionDeniedNotice": "Permisiunea locației blocată. Vă rugăm să o dezblocați să împărțiți locația voastră.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "newChat": "Chat nou", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "💬 Mesaj nou în FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "sentAPicture": "🖼️ {username} a trimis o poză", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "🎥{username} a trimis un video", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "😊 {username} a trimis un sticker", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "storeInSecureStorageDescription": "Păstrați cheia de recuperare în stocarea sigură a acestui dispozitiv.", - "@storeInSecureStorageDescription": {}, - "saveKeyManuallyDescription": "Activați dialogul de partajare sistemului sau folosiți clipboard-ul să salvați manual această cheie.", - "@saveKeyManuallyDescription": {}, - "countFiles": "{count} fișiere", - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "hugContent": "{senderName} vă îmbrățișează", - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "storeInAppleKeyChain": "Stoca în Apple KeyChain", - "@storeInAppleKeyChain": {}, - "addEmail": "Adăugați email", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "confirmMatrixId": "Vă rugăm să confirmați Matrix ID-ul vostru să ștergeți contul vostru.", - "@confirmMatrixId": {}, - "cuddleContent": "{senderName} vă îmbrățișează", - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "supposedMxid": "ID-ul ar trebuii să fie {mxid}", - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "commandHint_html": "Trimiteți text format ca HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "addToSpace": "Adăugați la spațiu", - "@addToSpace": {}, - "commandHint_hug": "Trimiteți o îmbrățișare", - "@commandHint_hug": {}, - "badServerVersionsException": "Homeserver-ul suportă versiunele de Spec următoare:\n{serverVersions}\nDar această aplicație suportă numai {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerLoginTypesException": "Homeserver-ul suportă următoarele feluri de login:\n{serverVersions}\nDar această aplicație suportă numai:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} a schimbat regulile pentru acesul musafirilor la: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRulesTo": "{username} a schimbat regulile de alăturare la: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "yourChatBackupHasBeenSetUp": "Backup-ul vostru de chat a fost configurat.", - "@yourChatBackupHasBeenSetUp": {}, - "cantOpenUri": "Nu se poate deschide URI-ul {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changedTheDisplaynameTo": "{username} s-a schimbat displayname la: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} a schimbat regulile pentru acesul musafirilor", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changeTheHomeserver": "Schimbați homeserver-ul", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "Mesajele voastre vechi sunt sigurate cu o cheie de recuperare. Vă rugăm să nu o pierdeți.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "Conținutul a fost reportat la administratori serverului", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Detalii de chat", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "commandHint_dm": "Porniți un chat direct\nFolosiți --no-encryption să dezactivați criptare", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "commandHint_me": "Descrieți-vă", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "contactHasBeenInvitedToTheGroup": "Contactul a fost invitat la grup", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Conține nume de utilizator", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Copiați în clipboard", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "countParticipants": "{count} participanți", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "delete": "Ștergeți", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deactivateAccountWarning": "Această acțiune va dezactiva contul vostru. Nu poate fi anulat! Sunteți sigur?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Ștergeți contul", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Nivel de permisiuni implicită", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Ștergeți mesajul", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Descărcați fișierul", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Activați pachet de emote global", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "Totul e gata!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Editați servere blocate", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Shortcode de emote nevalibil!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "edit": "Editați", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Schimbați pseudonimele camerei", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Chat gol", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Activați criptare", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Criptat", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Schimbați displayname", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Schimbați avatarul din cameră", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Emote deja există!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Pachete de emoturi din cameră", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Configurări Emote", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Shortcode de emote", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Trebuie să alegeți shortcode pentru emote și o imagine!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "encryption": "Criptare", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "enterAnEmailAddress": "Introduceți o adresă email", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "homeserver": "Homeserver", - "@homeserver": {}, - "errorObtainingLocation": "Obținerea locației a eșuat: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "ok": "Ok", - "@ok": { - "type": "text", - "placeholders": {} - }, - "youKickedAndBanned": "🙅Ați dat afară și interzis pe {user}", - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "noKeyForThisMessage": "Această chestie poate să se întâmple când mesajul a fost trimis înainte să vă conectați contul cu acest dispozitiv.\n\nO altă explicație ar fi dacă trimițătorul a blocat dispozitivul vostru sau ceva s-a întâmplat cu conexiunea la internet\n\nPuteți să citiți mesajul în o altă seșiune? Atunci puteți să transferați mesajul de acolo! Mergeți la Configurări > Dispozitive și verificați că dispozitivele s-au verificat. Când deschideți camera în viitor și ambele seșiune sunt în foreground, cheile va fi transmise automat. \n\nDoriți să îți păstrați cheile când deconectați sau schimbați dispozitive? Fiți atenți să activați backup de chat în configurări.", - "@noKeyForThisMessage": {}, - "sendAsText": "Trimiteți ca text", - "@sendAsText": { - "type": "text" - }, - "reportErrorDescription": "Ceva a eșuat. Vă rugăm să încercați din nou mai tărziu. Dacă doriți, puteți să reportați problema la dezvoltatori.", - "@reportErrorDescription": {}, - "openLinkInBrowser": "Deschideți linkul în browser", - "@openLinkInBrowser": {}, - "send": "Trimiteți", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Trimiteți un mesaj", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Trimiteți audio", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Trimiteți original", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Trimiteți video", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Trimiteți imagine", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Trimiteți sticker", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterRecoveryKeyDescription": "Să vă deblocați mesajele vechi, vă rugăm să introduceți cheia de recuperare creată de o seșiune anterioră. Cheia de recuperare NU este parola voastră.", - "@pleaseEnterRecoveryKeyDescription": {}, - "separateChatTypes": "Afișați chaturi directe și grupuri separat", - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "setAsCanonicalAlias": "Stabiliți ca pseudonimul primar", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Scrieți un mesaj…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "Da", - "@yes": { - "type": "text", - "placeholders": {} - }, - "markAsRead": "Marcați ca citit", - "@markAsRead": {}, - "oopsPushError": "Ups! Din păcate, o eroare s-a întâmplat cu stabilirea de notificări push.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oneClientLoggedOut": "Unul dintre clienților voștri a fost deconectat", - "@oneClientLoggedOut": {}, - "editBundlesForAccount": "Editați pachetele pentru acest cont", - "@editBundlesForAccount": {}, - "bundleName": "Numele pachetului", - "@bundleName": {}, - "link": "Link", - "@link": {}, - "passphraseOrKey": "frază de acces sau cheie de recuperare", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Parolă", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Parola uitată", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Parola a fost schimbată", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Recuperare parolei", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "Persoane", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Alegeți o imagine", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pleaseChoose": "Vă rugăm să alegeți", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pin": "Fixați", - "@pin": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Vă rugăm să alegeți un passcode", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Vă rugăm să introduceți 4 cifre sau puteți să lăsați gol să dezactivați lacătul aplicației.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Vă rugăm să introduceți parola voastră", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Vă rugăm să introduceți username-ul vostru", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Vă rugăm să urmați instrucțiunele pe website și apoi să apăsați pe următor.", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "reason": "Motiv", - "@reason": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} a respins invitația", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactedAnEvent": "{username} a redactat un eveniment", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeAllOtherDevices": "Eliminați toate celelalte dispozitive", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Ștergeți avatarul", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Reda conținut bogat al mesajelor", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Înlocuiți camera cu versiune mai nouă", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "Răspundeți", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Raportați mesajul", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Cereți permisiune", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Salvați fișierul", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "search": "Căutați", - "@search": { - "type": "text", - "placeholders": {} - }, - "recoveryKey": "Cheie de recuperare", - "@recoveryKey": {}, - "recoveryKeyLost": "Cheia de recuperare pierdută?", - "@recoveryKeyLost": {}, - "seenByUser": "Văzut de {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "muteChat": "Amuțați chatul", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Vă rugăm să fiți conștienți că e nevoie de Pantalaimon să folosiți criptare end-to-end deocamdată.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "autoplayImages": "Anima automatic stickere și emote animate", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "sendOnEnter": "Trimite cu tasta enter", - "@sendOnEnter": {}, - "changedTheChatPermissions": "{username} a schimbat permisiunile chatului", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "extremeOffensive": "De foarte mare ofensă", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "id": "ID", - "@id": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "📩{username} a invitat {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "deviceKeys": "Cheile dispozitivului:", - "@deviceKeys": {}, - "pleaseEnterRecoveryKey": "Vă rugăm să introduceți cheia voastră de recuperare:", - "@pleaseEnterRecoveryKey": {}, - "newVerificationRequest": "Cerere de verificare nouă!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "remove": "Eliminați", - "@remove": { - "type": "text", - "placeholders": {} - }, - "play": "Redați {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "channelCorruptedDecryptError": "Criptarea a fost corupată", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Alegeți o parolă robustă", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "commandHint_cuddle": "Trimiteți o îmbrățișare", - "@commandHint_cuddle": {}, - "googlyEyesContent": "{senderName} v-a trimis ochi googly", - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "areYouSureYouWantToLogout": "Sunteți sigur că doriți să vă deconectați?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "changedTheRoomAliases": "{username} a schimbat pseudonimele camerei", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changeYourAvatar": "Schimbați avatarul vostru", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "commandHint_join": "Alăturați-vă la camera alesă", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "allChats": "Toate Chaturile", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "commandHint_invite": "Invitați utilizatorul ales la această cameră", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "changeTheNameOfTheGroup": "Schimbați numele grupului", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "commandHint_googly": "Trimiteți câțiva ochi googly", - "@commandHint_googly": {}, - "botMessages": "Mesaje Bot", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "all": "Toate", - "@all": { - "type": "text", - "placeholders": {} - }, - "blocked": "Blocat", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "changedTheJoinRules": "{username} a schimbat regulile de alăturare", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheProfileAvatar": "{username} s-a schimbat avatarul", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "appLock": "Lacăt aplicație", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "changedTheHistoryVisibilityTo": "{username} a schimbat vizibilitatea istoriei chatului la: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "close": "Închideți", - "@close": { - "type": "text", - "placeholders": {} - }, - "reopenChat": "Deschide din nou chatul", - "@reopenChat": {}, - "pleaseTryAgainLaterOrChooseDifferentServer": "Vă rugăm să încercați din nou mai târziu sau să alegeți un server diferit.", - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "signInWithPassword": "Conectați-vă cu parolă", - "@signInWithPassword": {}, - "@setColorTheme": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@tryAgain": {}, - "@unbanUserDescription": {}, - "@messagesStyle": {}, - "@chatDescription": {}, - "@pushNotificationsNotAvailable": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@makeAdminDescription": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@optionalRedactReason": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@redactMessageDescription": {}, - "@invalidInput": {}, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@invitePrivateChat": {}, - "@importEmojis": {}, - "@noChatDescriptionYet": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@chatDescriptionHasBeenChanged": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@profileNotFound": {}, - "@shareInviteLink": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@replace": {}, - "@createGroup": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@invite": {} -} \ No newline at end of file + "@@last_modified": "2021-08-14 12:41:09.918296", + "about": "Despre", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Accept", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} a aceptat invitați", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Cont", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} a activat criptarea end-to-end", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "admin": "Administrator", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "poreclă", + "@alias": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} a acceptat apelul", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Oricine se poate alătura", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Arhivă", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Vizitatorii \"guest\" se pot alătura", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ești sigur?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Pentru a putea conecta cealaltă persoană, te rog introdu parola sau cheia ta de recuperare.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Accepți cererea de verificare de la {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "banFromChat": "Interzis din conversație", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Interzis", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} a interzis pe {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Blochează dispozitiv", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "cancel": "Anulează", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changeDeviceName": "Schimbă numele dispozitiv", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} a schimbat poza conversați", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} a schimbat descrierea grupului în '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} a schimbat porecla în '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "commandHint_unban": "Dezinterziceți utilizatorul ales din această cameră", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "deviceId": "ID-ul Dispozitiv", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Dispozitive", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "Chaturi directe", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} a terminat apelul", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterYourHomeserver": "Introduceți homeserverul vostru", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Grup cu {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "howOffensiveIsThisContent": "Cât de ofensiv este acest conținut?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "kickFromChat": "Dați afară din chat", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "rejoin": "Reintrați", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "sentCallInformations": "{senderName} a trimis informație de apel", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "showPassword": "Afișați parola", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "no": "Nu", + "@no": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Trimiteți mesaje", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "submit": "Trimiteți", + "@submit": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{Un chat necitit} other{{unreadCount} chaturi necitite}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "verifySuccess": "A reușit verificarea!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Mesaj vocal", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Imagine de fundal", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "reactedWith": "{sender} a reacționat cu {reaction}", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "changePassword": "Schimbați parola", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "next": "Următor", + "@next": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Fără conexiune la server", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Nu ați adăugat încă nici un mod de recuperare pentru parola voastră.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "notifications": "Notificări", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "openVideoCamera": "Deschideți camera pentru video", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Deschideți aplicația să citiți mesajele", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Deschideți camera", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Eliminat de {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Eliminați dispozitivul", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "share": "Partajați", + "@share": { + "type": "text", + "placeholders": {} + }, + "shareLocation": "Partajați locația", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "skip": "Săriți peste", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Codul surs", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "Spațiul este public", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Numele spațiului", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Comutați favoritul", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "unblockDevice": "Debloca dispozitiv", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Dispozitiv necunoscut", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "verify": "Verificați", + "@verify": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "V-am trimis un email", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Nu mai participați în acest chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Cheia voastră publică", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "addToSpaceDescription": "Alegeți un spațiu în care să adăugați acest chat.", + "@addToSpaceDescription": {}, + "placeCall": "Faceți apel", + "@placeCall": {}, + "voiceCall": "Apel vocal", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Versiune de Android nesuportat", + "@unsupportedAndroidVersion": {}, + "previousAccount": "Contul anterior", + "@previousAccount": {}, + "userIsTyping": "{username} tastează…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "widgetCustom": "Personalizat", + "@widgetCustom": {}, + "screenSharingTitle": "partajarea de ecran", + "@screenSharingTitle": {}, + "newGroup": "Grup nou", + "@newGroup": {}, + "changedTheRoomInvitationLink": "{username} a schimbat linkul de invitație", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "chat": "Chat", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chats": "Chaturi", + "@chats": { + "type": "text", + "placeholders": {} + }, + "invited": "Invitat", + "@invited": { + "type": "text", + "placeholders": {} + }, + "login": "Conectați-vă", + "@login": { + "type": "text", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Backup de cheie online este activat", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "removeFromBundle": "Stergeți din acest pachet", + "@removeFromBundle": {}, + "enableMultiAccounts": "(BETA) Activați multiple conturi pe acest dispozitiv", + "@enableMultiAccounts": {}, + "participant": "Participant", + "@participant": { + "type": "text", + "placeholders": {} + }, + "openInMaps": "Deschideți pe hartă", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Vă rugăm să introduceți pinul vostru", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "privacy": "Confidențialitate", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Regulile Push", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "recording": "Înregistrare", + "@recording": { + "type": "text", + "placeholders": {} + }, + "register": "Înregistrați-vă", + "@register": { + "type": "text", + "placeholders": {} + }, + "redactMessage": "Redactați mesaj", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Versiunea camerei", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "security": "Securitate", + "@security": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Trimiteți fișier", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Stabiliți status", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Configurări", + "@settings": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Invitați pentru mine", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} a retras invitația pentru {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Ajutor", + "@help": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritm de criptare necunoscut", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Dezamuțați chat", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Anulează fixarea", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} a ridicat interzicerea lui {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "openChat": "Deschideți Chat", + "@openChat": {}, + "emailOrUsername": "Email sau nume de utilizator", + "@emailOrUsername": {}, + "youBannedUser": "Ați interzis pe {user}", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "fileIsTooBigForServer": "Serverul reportează că fișierul este prea mare să fie trimis.", + "@fileIsTooBigForServer": {}, + "widgetName": "Nume", + "@widgetName": {}, + "sorryThatsNotPossible": "Scuze... acest nu este posibil", + "@sorryThatsNotPossible": {}, + "enableEncryptionWarning": "Activând criptare, nu mai puteți să o dezactivați în viitor. Sunteți sigur?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "commandMissing": "{command} nu este o comandă.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "status": "Status", + "@status": { + "type": "text", + "placeholders": {} + }, + "connect": "Conectați", + "@connect": { + "type": "text", + "placeholders": {} + }, + "you": "Voi", + "@you": { + "type": "text", + "placeholders": {} + }, + "start": "Începeți", + "@start": {}, + "videoCallsBetaWarning": "Vă rugăm să luați notă că apeluri video sunt în beta. Se poate că nu funcționează normal sau de loc pe fie care platformă.", + "@videoCallsBetaWarning": {}, + "pinMessage": "Fixați în cameră", + "@pinMessage": {}, + "wasDirectChatDisplayName": "Chat gol (a fost {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "text", + "placeholders": { + "oldDisplayName": {} + } + }, + "pleaseClickOnLink": "Vă rugăm să deschideți linkul din email și apoi să procedați.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "reportUser": "Reportați utilizator", + "@reportUser": {}, + "encryptionNotEnabled": "Criptare nu e activată", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Camere Publice", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "addToBundle": "Adăugați în pachet", + "@addToBundle": {}, + "theyDontMatch": "Nu sunt asemănători", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "loadingPleaseWait": "Încărcând... Vă rugăm să așteptați.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "theyMatch": "Sunt asemănători", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Comutați amuțeștarea", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "scanQrCode": "Scanați cod QR", + "@scanQrCode": {}, + "addAccount": "Adăugați cont", + "@addAccount": {}, + "experimentalVideoCalls": "Apeluri video experimentale", + "@experimentalVideoCalls": {}, + "confirmEventUnpin": "Sunteți sigur că doriți să anulați permanent fixarea evenimentului?", + "@confirmEventUnpin": {}, + "emojis": "Emoji-uri", + "@emojis": {}, + "switchToAccount": "Schimbați la contul {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "nextAccount": "Contul următor", + "@nextAccount": {}, + "indexedDbErrorTitle": "Probleme cu modul privat", + "@indexedDbErrorTitle": {}, + "users": "Utilizatori", + "@users": {}, + "startFirstChat": "Începeți primul chatul vostru", + "@startFirstChat": {}, + "callingPermissions": "Permisiuni de apel", + "@callingPermissions": {}, + "callingAccount": "Cont de apel", + "@callingAccount": {}, + "foregroundServiceRunning": "Această notificare apare când serviciul de foreground rulează.", + "@foregroundServiceRunning": {}, + "callingAccountDetails": "Permite FluffyChat să folosească aplicația de apeluri nativă android.", + "@callingAccountDetails": {}, + "appearOnTop": "Apare deasupra", + "@appearOnTop": {}, + "appearOnTopDetails": "Permite aplicația să apare deasupra (nu este necesar dacă aveți FluffyChat stabilit ca cont de apeluri)", + "@appearOnTopDetails": {}, + "currentlyActive": "Activ acum", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Conține displayname", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "isTyping": "tastează…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Backup de chat", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "repeatPassword": "Repetați parola", + "@repeatPassword": {}, + "changeTheme": "Schimbați tema aplicației", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Chatul a fost adăugat la acest spațiu", + "@chatHasBeenAddedToThisSpace": {}, + "clearArchive": "Ștergeți arhiva", + "@clearArchive": {}, + "commandHint_markasdm": "Marcați ca cameră de mesaje directe", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Marcați ca grup", + "@commandHint_markasgroup": {}, + "commandHint_ban": "Interziceți acesul utilizatorului ales din această cameră", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Ștergeți cache", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Creați un grup de chat gol\nFolosiți --no-encryption să dezactivați criptare", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Renunțați sesiunea", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_kick": "Dați afară pe utilizatorul ales din această cameră", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Renunțați la această cameră", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Alegeți un avatar pentru această cameră (foloșește mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Alegeți un displayname pentru această cameră", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Stabiliți nivelul de putere a utilizatorul ales (implicit: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Trimiteți text simplu/neformatat", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Trimiteți răspuns ca reacție", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Trimiteți text", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandInvalid": "Comandă nevalibilă", + "@commandInvalid": { + "type": "text" + }, + "compareEmojiMatch": "Vă rugăm să comparați emoji-urile", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Vă rugăm să comparați numerele", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Dezcriptarea mesajului a eșuat: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "create": "Creați", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "💬{username} a creat chatul", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewSpace": "Spațiu nou", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "allRooms": "Toate chaturi de grup", + "@allRooms": { + "type": "text", + "placeholders": {} + }, + "forward": "Înainte", + "@forward": { + "type": "text", + "placeholders": {} + }, + "groups": "Grupuri", + "@groups": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Ascunde evenimente redactate", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Ascunde evenimente necunoscute", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "identity": "Identitate", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Ignorați", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Utilizatori ignorați", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Am făcut click pe link", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Parolă sau cheie de recuperare incorectă", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Inofensiv", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Invitați contact", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Invitați contact la {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "inviteText": "{username} v-a invitat la FluffyChat.\n1. Instalați FluffyChat: https://fluffychat.im\n2. Înregistrați-vă sau conectați-vă\n3. Deschideți invitația: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "joinedTheChat": "👋{username} a intrat în chat", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "kicked": "👞{username} a dat afară pe {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "lastActiveAgo": "Ultima dată activ: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Renunțați", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "A plecat din chat", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Permis", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Luminat", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Încărcați încă mai {count} participanți", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "dehydrate": "Exportați sesiunea și ștergeți dispozitivul", + "@dehydrate": {}, + "dehydrateTor": "Utilizatori de TOR: Exportați sesiunea", + "@dehydrateTor": {}, + "dehydrateTorLong": "Pentru utilizatori de TOR, este recomandat să exportați sesiunea înainte de a închideți fereastra.", + "@dehydrateTorLong": {}, + "hydrateTor": "Utilizatori TOR: Importați sesiune exportată", + "@hydrateTor": {}, + "hydrateTorLong": "Ați exportat sesiunea vostră ultima dată pe TOR? Importați-o repede și continuați să conversați.", + "@hydrateTorLong": {}, + "hydrate": "Restaurați din fișier backup", + "@hydrate": {}, + "loadMore": "Încarcă mai multe…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "logout": "Deconectați-vă", + "@logout": { + "type": "text", + "placeholders": {} + }, + "mention": "Menționați", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "Mesaje", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Nu s-a găsit nici un emote. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Criptare nu poate fi activată până când camera este accesibilă public.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "none": "Niciunul", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Fără permisie", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Nici o cameră nu s-a găsit…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificări activate pentru acest cont", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "obtainingLocation": "Obținând locație…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, ceva a eșuat…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "reject": "Respingeți", + "@reject": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Revoca interzicerea din chat", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Camera a fost actualizată", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "Stabiliți emoji-uri personalizate", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Stabiliți nivelul de permisii", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Autentificare unică", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} a început un apel", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "statusExampleMessage": "Ce faceți?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Prea multe cereri. Vă rugăm să încercați din nou mai tărziu!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Evenimet necunoscut '{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "verified": "Verificat", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Începeți verificare", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Apel video", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Vizibilitatea istoria chatului", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Vizibil pentru toți participanți", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Așteptând pe partenerul să accepte emoji-ul…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Așteptând pe partenerul să accepte numerele…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "warning": "Avertizment!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Cine poate face care acțiune", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Cine se poate alătura la acest grup", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "De ce doriți să reportați acest conținut?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Ștergeți backup-ul vostru de chat să creați o nouă cheie de recuperare?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Cu acestea adrese puteți să vă recuperați parola.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Ați fost interzis din acest chat", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "messageInfo": "Info mesajului", + "@messageInfo": {}, + "time": "Timp", + "@time": {}, + "messageType": "Fel de mesaj", + "@messageType": {}, + "sender": "Trimițător", + "@sender": {}, + "openGallery": "Deschideți galeria", + "@openGallery": {}, + "removeFromSpace": "Eliminați din spațiu", + "@removeFromSpace": {}, + "publish": "Publicați", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "unsupportedAndroidVersionLong": "Această funcție are nevoie de o versiune de Android mai nouă. Vă rugăm să verificați dacă sunt actualizări sau suport de la Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "dismiss": "Respingeți", + "@dismiss": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Notiță text", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetUrlError": "Acest URL nu este valibil.", + "@widgetUrlError": {}, + "widgetNameError": "Vă rugăm să introduceți un nume de afișare.", + "@widgetNameError": {}, + "errorAddingWidget": "Adăugarea widget-ului a eșuat.", + "@errorAddingWidget": {}, + "youRejectedTheInvitation": "Ați respins invitația", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Va-ți alăturat la chat", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍Ați acceptat invitația", + "@youAcceptedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Ați retras invitația pentru {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "youInvitedBy": "📩Ați fost invitat de {user}", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "unlockOldMessages": "Deblocați mesajele vechi", + "@unlockOldMessages": {}, + "youInvitedUser": "📩Ați invitat pe {user}", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "youKicked": "👞Ați dat afară pe {user}", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "youUnbannedUser": "Ați ridicat interzicerea lui {user}", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "storeInAndroidKeystore": "Stoca în Android KeyStore", + "@storeInAndroidKeystore": {}, + "user": "Utilizator", + "@user": {}, + "custom": "Personalizat", + "@custom": {}, + "screenSharingDetail": "Partajați ecranul în FluffyChat", + "@screenSharingDetail": {}, + "storeSecurlyOnThisDevice": "Stoca sigur pe acest dispozitiv", + "@storeSecurlyOnThisDevice": {}, + "otherCallingPermissions": "Microfon, cameră și alte permisiuni lui FluffyChat", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "De ce este acest mesaj ilizibil?", + "@whyIsThisMessageEncrypted": {}, + "newSpace": "Spațiu nou", + "@newSpace": {}, + "enterSpace": "Intrați în spațiu", + "@enterSpace": {}, + "enterRoom": "Intrați în cameră", + "@enterRoom": {}, + "allSpaces": "Toate spațiile", + "@allSpaces": {}, + "numChats": "{number} chaturi", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "hideUnimportantStateEvents": "Ascundeți evenimente de stare neimportante", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Nu se mai apară din nou", + "@doNotShowAgain": {}, + "newSpaceDescription": "Spațiile vă permit să vă consolidați chaturile și să stabiliți comunități private sau publice.", + "@newSpaceDescription": {}, + "encryptThisChat": "Criptați acest chat", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Pentru motive de securitate, nu este posibil să dezactivați criptarea unui chat în care criptare este activată.", + "@disableEncryptionWarning": {}, + "noBackupWarning": "Avertisment! Fără să activați backup de chat, veți pierde accesul la mesajele voastre criptate. E foarte recomandat să activați backup de chat înainte să vă deconectați.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Nu s-a găsit alte dispozitive", + "@noOtherDevicesFound": {}, + "fileHasBeenSavedAt": "Fișierul a fost salvat la {path}", + "@fileHasBeenSavedAt": { + "type": "text", + "placeholders": { + "path": {} + } + }, + "jump": "Săriți", + "@jump": {}, + "report": "reportați", + "@report": {}, + "jumpToLastReadMessage": "Săriți la ultimul citit mesaj", + "@jumpToLastReadMessage": {}, + "memberChanges": "Schimbări de membri", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Musafiri pot să se alăture", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "fileName": "Nume de fișier", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Mărimea fontului", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "De la alăturare", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "De la invitația", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Mergeți la camera nouă", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Grupul este public", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "guestsAreForbidden": "Musafiri sunt interziși", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "kickedAndBanned": "🙅{username} a dat afară și a interzis pe {targetName} din cameră", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "dehydrateWarning": "Această actiune nu poate fi anulată. Asigurați-vă că păstrați fișierul backup.", + "@dehydrateWarning": {}, + "joinRoom": "Alăturați la cameră", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Conectați-vă la {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "locationDisabledNotice": "Servicile de locație sunt dezactivate. Vă rugăm să le activați să împărțiți locația voastră.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Se pare că nu aveți serviciile google pe dispozitivul vostru. Această decizie este bună pentru confidențialitatea voastră! Să primiți notificari push în FluffyChat vă recomandăm https://microg.org/ sau https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} nu este server matrix, înlocuiți cu {server2}?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "numUsersTyping": "{count} utilizatori tastează…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "offensive": "Ofensiv", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "confirm": "Confirmați", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "or": "Sau", + "@or": { + "type": "text", + "placeholders": {} + }, + "serverRequiresEmail": "Acest server trebuie să valideze emailul vostru pentru înregistrare.", + "@serverRequiresEmail": {}, + "waitingPartnerAcceptRequest": "Așteptând pe partenerul să accepte cererea…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Întunecat", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} sa partajat locația", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "setInvitationLink": "Stabiliți linkul de invitație", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfera de la alt dispozitiv", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizează... Vă rugăm să așteptați.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Sistem", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Marcați Citit/Necitit", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Încercați să trimiteți din nou", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Nedisponibil", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "userAndUserAreTyping": "{username} și {username2} tastează…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userLeftTheChat": "🚪{username} a plecat din chat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userAndOthersAreTyping": "{username} și {count} alți tastează…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userSentUnknownEvent": "{username} a trimis un eveniment {type}", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "unverified": "Neverificat", + "@unverified": {}, + "verifyTitle": "Verificând celălalt cont", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Vizibil pentru toți", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "readUpToHere": "Citit până aici", + "@readUpToHere": {}, + "changedTheHistoryVisibility": "{username} a schimbat vizibilitatea istoriei chatului", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "copy": "Copiați", + "@copy": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Displayname a fost schimbat", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "invitedUsersOnly": "Numai utilizatori invitați", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Configurați chat", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Copiat în clipboard", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "device": "Dispozitiv", + "@device": { + "type": "text", + "placeholders": {} + }, + "username": "Nume de utilizator", + "@username": { + "type": "text", + "placeholders": {} + }, + "sentAnAudio": "🎤{username} a trimis audio", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAFile": "📁{username} a trimis un fișier", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "indexedDbErrorLong": "Stocarea de mesaje nu este activat implicit în modul privat.\nVă rugăm să vizitați\n- about:config\n- stabiliți dom.indexedDB.privateBrowsing.enabled la true\nAstfel, nu este posibil să folosiți FluffyChat.", + "@indexedDbErrorLong": {}, + "addWidget": "Adăugați widget", + "@addWidget": {}, + "locationPermissionDeniedNotice": "Permisiunea locației blocată. Vă rugăm să o dezblocați să împărțiți locația voastră.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "newChat": "Chat nou", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Mesaj nou în FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} a trimis o poză", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "🎥{username} a trimis un video", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "😊 {username} a trimis un sticker", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "storeInSecureStorageDescription": "Păstrați cheia de recuperare în stocarea sigură a acestui dispozitiv.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Activați dialogul de partajare sistemului sau folosiți clipboard-ul să salvați manual această cheie.", + "@saveKeyManuallyDescription": {}, + "countFiles": "{count} fișiere", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "hugContent": "{senderName} vă îmbrățișează", + "@hugContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "storeInAppleKeyChain": "Stoca în Apple KeyChain", + "@storeInAppleKeyChain": {}, + "addEmail": "Adăugați email", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "confirmMatrixId": "Vă rugăm să confirmați Matrix ID-ul vostru să ștergeți contul vostru.", + "@confirmMatrixId": {}, + "cuddleContent": "{senderName} vă îmbrățișează", + "@cuddleContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "supposedMxid": "ID-ul ar trebuii să fie {mxid}", + "@supposedMxid": { + "type": "text", + "placeholders": { + "mxid": {} + } + }, + "commandHint_html": "Trimiteți text format ca HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "addToSpace": "Adăugați la spațiu", + "@addToSpace": {}, + "commandHint_hug": "Trimiteți o îmbrățișare", + "@commandHint_hug": {}, + "badServerVersionsException": "Homeserver-ul suportă versiunele de Spec următoare:\n{serverVersions}\nDar această aplicație suportă numai {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerLoginTypesException": "Homeserver-ul suportă următoarele feluri de login:\n{serverVersions}\nDar această aplicație suportă numai:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} a schimbat regulile pentru acesul musafirilor la: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRulesTo": "{username} a schimbat regulile de alăturare la: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "yourChatBackupHasBeenSetUp": "Backup-ul vostru de chat a fost configurat.", + "@yourChatBackupHasBeenSetUp": {}, + "cantOpenUri": "Nu se poate deschide URI-ul {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changedTheDisplaynameTo": "{username} s-a schimbat displayname la: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} a schimbat regulile pentru acesul musafirilor", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changeTheHomeserver": "Schimbați homeserver-ul", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "Mesajele voastre vechi sunt sigurate cu o cheie de recuperare. Vă rugăm să nu o pierdeți.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "Conținutul a fost reportat la administratori serverului", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Detalii de chat", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "commandHint_dm": "Porniți un chat direct\nFolosiți --no-encryption să dezactivați criptare", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "commandHint_me": "Descrieți-vă", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "contactHasBeenInvitedToTheGroup": "Contactul a fost invitat la grup", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Conține nume de utilizator", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Copiați în clipboard", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} participanți", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "delete": "Ștergeți", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Această acțiune va dezactiva contul vostru. Nu poate fi anulat! Sunteți sigur?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Ștergeți contul", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Nivel de permisiuni implicită", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Ștergeți mesajul", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Descărcați fișierul", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Activați pachet de emote global", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "Totul e gata!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Editați servere blocate", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Shortcode de emote nevalibil!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "edit": "Editați", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Schimbați pseudonimele camerei", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Chat gol", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Activați criptare", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Criptat", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Schimbați displayname", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Schimbați avatarul din cameră", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Emote deja există!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Pachete de emoturi din cameră", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Configurări Emote", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Shortcode de emote", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Trebuie să alegeți shortcode pentru emote și o imagine!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "encryption": "Criptare", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "enterAnEmailAddress": "Introduceți o adresă email", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "homeserver": "Homeserver", + "@homeserver": {}, + "errorObtainingLocation": "Obținerea locației a eșuat: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "ok": "Ok", + "@ok": { + "type": "text", + "placeholders": {} + }, + "youKickedAndBanned": "🙅Ați dat afară și interzis pe {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "noKeyForThisMessage": "Această chestie poate să se întâmple când mesajul a fost trimis înainte să vă conectați contul cu acest dispozitiv.\n\nO altă explicație ar fi dacă trimițătorul a blocat dispozitivul vostru sau ceva s-a întâmplat cu conexiunea la internet\n\nPuteți să citiți mesajul în o altă seșiune? Atunci puteți să transferați mesajul de acolo! Mergeți la Configurări > Dispozitive și verificați că dispozitivele s-au verificat. Când deschideți camera în viitor și ambele seșiune sunt în foreground, cheile va fi transmise automat. \n\nDoriți să îți păstrați cheile când deconectați sau schimbați dispozitive? Fiți atenți să activați backup de chat în configurări.", + "@noKeyForThisMessage": {}, + "sendAsText": "Trimiteți ca text", + "@sendAsText": { + "type": "text" + }, + "reportErrorDescription": "Ceva a eșuat. Vă rugăm să încercați din nou mai tărziu. Dacă doriți, puteți să reportați problema la dezvoltatori.", + "@reportErrorDescription": {}, + "openLinkInBrowser": "Deschideți linkul în browser", + "@openLinkInBrowser": {}, + "send": "Trimiteți", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Trimiteți un mesaj", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Trimiteți audio", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Trimiteți original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Trimiteți video", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Trimiteți imagine", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Trimiteți sticker", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterRecoveryKeyDescription": "Să vă deblocați mesajele vechi, vă rugăm să introduceți cheia de recuperare creată de o seșiune anterioră. Cheia de recuperare NU este parola voastră.", + "@pleaseEnterRecoveryKeyDescription": {}, + "separateChatTypes": "Afișați chaturi directe și grupuri separat", + "@separateChatTypes": { + "type": "text", + "placeholders": {} + }, + "setAsCanonicalAlias": "Stabiliți ca pseudonimul primar", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Scrieți un mesaj…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Da", + "@yes": { + "type": "text", + "placeholders": {} + }, + "markAsRead": "Marcați ca citit", + "@markAsRead": {}, + "oopsPushError": "Ups! Din păcate, o eroare s-a întâmplat cu stabilirea de notificări push.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "Unul dintre clienților voștri a fost deconectat", + "@oneClientLoggedOut": {}, + "editBundlesForAccount": "Editați pachetele pentru acest cont", + "@editBundlesForAccount": {}, + "bundleName": "Numele pachetului", + "@bundleName": {}, + "link": "Link", + "@link": {}, + "passphraseOrKey": "frază de acces sau cheie de recuperare", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Parolă", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Parola uitată", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Parola a fost schimbată", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Recuperare parolei", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "Persoane", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Alegeți o imagine", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pleaseChoose": "Vă rugăm să alegeți", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pin": "Fixați", + "@pin": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Vă rugăm să alegeți un passcode", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Vă rugăm să introduceți 4 cifre sau puteți să lăsați gol să dezactivați lacătul aplicației.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Vă rugăm să introduceți parola voastră", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Vă rugăm să introduceți username-ul vostru", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Vă rugăm să urmați instrucțiunele pe website și apoi să apăsați pe următor.", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "reason": "Motiv", + "@reason": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} a respins invitația", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactedAnEvent": "{username} a redactat un eveniment", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeAllOtherDevices": "Eliminați toate celelalte dispozitive", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Ștergeți avatarul", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Reda conținut bogat al mesajelor", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Înlocuiți camera cu versiune mai nouă", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "Răspundeți", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Raportați mesajul", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Cereți permisiune", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Salvați fișierul", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "search": "Căutați", + "@search": { + "type": "text", + "placeholders": {} + }, + "recoveryKey": "Cheie de recuperare", + "@recoveryKey": {}, + "recoveryKeyLost": "Cheia de recuperare pierdută?", + "@recoveryKeyLost": {}, + "seenByUser": "Văzut de {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "muteChat": "Amuțați chatul", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Vă rugăm să fiți conștienți că e nevoie de Pantalaimon să folosiți criptare end-to-end deocamdată.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "autoplayImages": "Anima automatic stickere și emote animate", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "sendOnEnter": "Trimite cu tasta enter", + "@sendOnEnter": {}, + "changedTheChatPermissions": "{username} a schimbat permisiunile chatului", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "extremeOffensive": "De foarte mare ofensă", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "📩{username} a invitat {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "deviceKeys": "Cheile dispozitivului:", + "@deviceKeys": {}, + "pleaseEnterRecoveryKey": "Vă rugăm să introduceți cheia voastră de recuperare:", + "@pleaseEnterRecoveryKey": {}, + "newVerificationRequest": "Cerere de verificare nouă!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "remove": "Eliminați", + "@remove": { + "type": "text", + "placeholders": {} + }, + "play": "Redați {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "channelCorruptedDecryptError": "Criptarea a fost corupată", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Alegeți o parolă robustă", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "commandHint_cuddle": "Trimiteți o îmbrățișare", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} v-a trimis ochi googly", + "@googlyEyesContent": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "areYouSureYouWantToLogout": "Sunteți sigur că doriți să vă deconectați?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "changedTheRoomAliases": "{username} a schimbat pseudonimele camerei", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changeYourAvatar": "Schimbați avatarul vostru", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "commandHint_join": "Alăturați-vă la camera alesă", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "allChats": "Toate Chaturile", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "commandHint_invite": "Invitați utilizatorul ales la această cameră", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "changeTheNameOfTheGroup": "Schimbați numele grupului", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "commandHint_googly": "Trimiteți câțiva ochi googly", + "@commandHint_googly": {}, + "botMessages": "Mesaje Bot", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "all": "Toate", + "@all": { + "type": "text", + "placeholders": {} + }, + "blocked": "Blocat", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "changedTheJoinRules": "{username} a schimbat regulile de alăturare", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheProfileAvatar": "{username} s-a schimbat avatarul", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "appLock": "Lacăt aplicație", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "changedTheHistoryVisibilityTo": "{username} a schimbat vizibilitatea istoriei chatului la: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "close": "Închideți", + "@close": { + "type": "text", + "placeholders": {} + }, + "reopenChat": "Deschide din nou chatul", + "@reopenChat": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Vă rugăm să încercați din nou mai târziu sau să alegeți un server diferit.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWithPassword": "Conectați-vă cu parolă", + "@signInWithPassword": {} +} From bc497ce738e7b50c154eaac305cd096ee4136fc9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:49 +0000 Subject: [PATCH 067/106] Translated using Weblate (Serbian) Currently translated at 46.1% (301 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/sr/ --- assets/l10n/intl_sr.arb | 4016 ++++++++++++++++++--------------------- 1 file changed, 1804 insertions(+), 2212 deletions(-) diff --git a/assets/l10n/intl_sr.arb b/assets/l10n/intl_sr.arb index 2b0564d85..afebfa2db 100644 --- a/assets/l10n/intl_sr.arb +++ b/assets/l10n/intl_sr.arb @@ -1,2213 +1,1805 @@ { - "@@last_modified": "2021-08-14 12:41:09.857024", - "about": "О програму", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Прихвати", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} прихвата позивницу", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Налог", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} укључи шифровање с краја на крај", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Додај е-адресу", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "admin": "Админ", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "алијас", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "Сви", - "@all": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} одговори на позив", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "свако може да се придружи", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "appLock": "Закључавање апликације", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "archive": "Архива", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Да ли је гостима дозвољен приступ", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Сигурни сте?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "Заиста желите да се одјавите?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Да бисте могли да пријавите другу особу, унесите своју безбедносну фразу или кључ опоравка.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Прихватате ли захтев за верификацију од корисника {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerLoginTypesException": "Домаћи сервер подржава начине пријаве:\n{serverVersions}\nали ова апликација подржава само:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "Домаћи сервер подржава верзије:\n{serverVersions}\nали ова апликација подржава само {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "Забрани у ћаскању", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Забрањен", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} забрани корисника {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Блокирај уређај", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Блокиран", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Поруке Бота", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "Откажи", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "changeDeviceName": "Промени назив уређаја", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} промени аватар ћаскања", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} промени опис ћаскања у: „{description}“", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} промени назив ћаскања у: „{chatname}“", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username} измени дозволе ћаскања", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} промени приказно име на: „{displayname}“", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} измени правила за приступ гостију", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} измени правила за приступ гостију на: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "{username} измени видљивост историје", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} измени видљивост историје на: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} измени правила приступања", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} измени правила приступања на: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} измени свој аватар", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} измени алијас собе", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} измени везу позивнице", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Измени лозинку", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Промени домаћи сервер", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Измените изглед", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Измени назив групе", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Измените свој аватар", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "Шифровање је покварено", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "Ћаскање", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Копија ћаскања", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "Ваша резервна копија ћаскања је обезбеђена кључем. Немојте да га изгубите.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Детаљи ћаскања", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chats": "Ћаскања", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Изаберите јаку лозинку", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Очисти архиву", - "@clearArchive": {}, - "close": "Затвори", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Блокирај задатог корисника за ову собу", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_html": "Шаљи ХТМЛ обликован текст", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Позови задатог корисника у собу", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Придружи се наведеној соби", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Уклони задатог корисника из собе", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Напусти ову собу", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_me": "Опишите себе", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_myroomnick": "Поставља ваш надимак за ову собу", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Подеси ниво задатог корисника (подразумевано: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Шаљи неформатиран текст", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Шаљи одговор као реакцију", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_send": "Пошаљи текст", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_unban": "Скини забрану задатом кориснику за ову собу", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "compareEmojiMatch": "Упоредите и проверите да су емоџији идентични као на другом уређају:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Упоредите и проверите да су следећи бројеви идентични као на другом уређају:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Подешавање ћаскања", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "Потврди", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "Повежи се", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Особа је позвана у групу", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Садржи приказно име", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Садржи корисничко име", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "Садржај је пријављен администраторима сервера", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Копирано у клипборд", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Копирај", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Копирај у клипборд", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Не могу да дешифрујем поруку: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "учесника: {count}", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Направи", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "{username} направи ћаскање", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "currentlyActive": "Тренутно активно", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "тамни", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{day} {month}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{day} {month} {year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "Ово ће деактивирати ваш кориснички налог. Не може се повратити! Сигурни сте?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Подразумевани ниво приступа", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "delete": "Обриши", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Обриши налог", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Брисање поруке", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Уређај", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "ИД уређаја", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Уређаји", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "Директна ћаскања", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Име за приказ је измењено", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Преузми фајл", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "Уреди", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Уреди блокиране сервере", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Уреди име за приказ", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Уреди алијасе собе", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Уређује аватар собе", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Емоти већ постоји!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Неисправна скраћеница за емоти!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Пакети емотија за собу", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Поставке емотија", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "скраћеница", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Морате да изаберете скраћеницу и слику за емоти!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "празно ћаскање", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Глобално укључи пакет емотија", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Укључује шифровање", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Шифровање више нећете моћи да искључите. Сигурни сте?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Шифровано", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryption": "Шифровање", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "Шифровање није укључено", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} заврши позив", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "Унесите адресу е-поште", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "Унесите свој домаћи сервер", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "Све је спремно!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Екстремно увредљив", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "fileName": "Назив фајла", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Величина фонта", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "Напред", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "од приступања", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "од позивања", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Иди у нову собу", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Група", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "Група је јавна", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "Групе", - "@groups": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Група са корисником {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "гости су забрањени", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "гости могу приступити", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} поништи позивницу за корисника {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Помоћ", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Сакриј редиговане догађаје", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Сакриј непознате догађаје", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "Колико је увредљив овај садржај?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "ИД", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "Идентитет", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Игнориши", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Игнорисани корисници", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Кликнуо сам на везу", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Неисправна фраза или кључ опоравка", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Није увредљив", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Позивање особа", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Позови особу у групу {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "Позван", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "{username} позва корисника {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "само позвани корисници", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Позивнице за мене", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} вас позива у FluffyChat. \n1. Инсталирајте FluffyChat: https://fluffychat.im \n2. Региструјте се или пријавите \n3. Отворите везу позивнице: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "куца…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "{username} се придружи ћаскању", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "Придружи се соби", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "{username} избаци корисника {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "{username} избаци и забрани корисника {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "Избаци из ћаскања", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Последња активност: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Напусти", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "Напусти ћаскање", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Лиценца", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "светли", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Учитај још {count} учесника", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "Учитавам… Сачекајте.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Учитај још…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "login": "Пријава", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Пријава на {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "Одјава", - "@logout": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Измене чланова", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "Спомени", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "Поруке", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "Модератор", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Ућуткај ћаскање", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "За сада, потребан је Пантелејмон (Pantalaimon) да бисте користили шифровање с краја на крај.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "Ново ћаскање", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "Нова порука — FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Нови захтев за верификацију!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Следеће", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "Не", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Нема везе са сервером", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Нема емотија. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Шифровање се може активирати након што соба престане да буде јавно доступна.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Чини се да немате Гугл услуге на телефону. То је добра одлука за вашу приватност! Да би се протурале нотификације у FluffyChat, препоручујемо коришћење https://microg.org/ или https://unifiedpush.org/", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "none": "Ништа", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Још нисте одредили начин за опоравак лозинке.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Нема дозвола", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Нисам нашао собе…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "Обавештења", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Обавештења укључена за овај налог", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count} корисника куца…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "offensive": "Увредљив", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "Ван везе", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "у реду", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "На вези", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "Резерва кључева на мрежи је укључена", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Нажалост, дошло је до грешке при подешавању дотурања обавештења.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Нешто је пошло наопако…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Отворите апликацију да прочитате поруке", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Отвори камеру", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "or": "или", - "@or": { - "type": "text", - "placeholders": {} - }, - "participant": "Учесник", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "фраза или кључ опоравка", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Лозинка", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Заборављена лозинка", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Лозинка је промењена", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Опоравак лозинке", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "Људи", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Избор слике", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Закачи", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "Пусти {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChoose": "Изаберите", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Изаберите код за пролаз", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Кликните на везу у примљеној е-пошти па наставите.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Унесите 4 цифре или оставите празно да не закључавате апликацију.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Унесите своју лозинку", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Унесите свој пин", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Унесите своје корисничко име", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Испратите упутства на веб сајту и тапните на „Следеће“.", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Приватност", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Јавне собе", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Правила протурања", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "reason": "Разлог", - "@reason": { - "type": "text", - "placeholders": {} - }, - "recording": "Снимам", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} редигова догађај", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactMessage": "Редигуј поруку", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "register": "Регистрација", - "@register": { - "type": "text", - "placeholders": {} - }, - "reject": "Одбиј", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} одби позивницу", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "Поново се придружи", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Уклони", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Уклони све остале уређаје", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Уклонио корисник {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Уклони уређај", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Уклони изгнанство", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Уклоните свој аватар", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Приказуј обогаћен садржај поруке", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Замени собу новијом верзијом", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "Одговори", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Пријави поруку", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Затражи дозволу", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "Соба је надограђена", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Верзија собе", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "search": "Претражи", - "@search": { - "type": "text", - "placeholders": {} - }, - "security": "Безбедност", - "@security": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "{username} прегледа", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "send": "Пошаљи", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Пошаљи поруку", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Пошаљи аудио", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Пошаљи фајл", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Пошаљи слику", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Слање порука", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Пошаљи оригинал", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Пошаљи видео", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "{username} посла фајл", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "{username} посла аудио", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "{username} посла слику", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "{username} посла налепницу", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "{username} посла видео", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName} посла податке о позиву", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setAsCanonicalAlias": "Постави као главни алијас", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "постави посебне емотије", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Поставља везу позивнице", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Одреди ниво дозволе", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Постави статус", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "settings": "Поставке", - "@settings": { - "type": "text", - "placeholders": {} - }, - "share": "Подели", - "@share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} подели локацију", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "showPassword": "Прикажи лозинку", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Јединствена пријава", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "skip": "Прескочи", - "@skip": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Изворни код", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "startedACall": "{senderName} започе позив", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "status": "Стање", - "@status": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "Како сте данас?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "Пошаљи", - "@submit": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "системски", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "Не поклапају се", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Поклапају се", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Мењај омиљеност", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Мењај ућутканост", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Означи не/прочитано", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Превише упита. Покушајте касније!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Пренос са другог уређаја", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Покушај слање поново", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Недоступно", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} одблокира корисника {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unblockDevice": "Одблокирај уређај", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Непознат уређај", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Непознат алгоритам шифровања", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Непознат догађај „{type}“", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "unmuteChat": "Врати обавештења", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Откачи", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, other{непрочитаних ћаскања: {unreadCount}}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "userAndOthersAreTyping": "{username} и {count} корисника куцају…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username} и {username2} куцају…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username} куца…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userLeftTheChat": "{username} напусти ћаскање", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "username": "Корисничко име", - "@username": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "{username} посла {type} догађај", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "verified": "Оверен", - "@verified": { - "type": "text", - "placeholders": {} - }, - "verify": "Верификуј", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Покрени верификацију", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "Успешно сте верификовали!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Верификујем други налог", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Видео позив", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Одреди видљивост историје", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "видљиво свим учесницима", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "видљиво свима", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Гласовна порука", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Чекам да саговорник прихвати захтев…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Чекам да саговорник прихвати емоџије…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Чекам да саговорник прихвати бројеве…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Тапета", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "Упозорење!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Послали смо вам е-пошту", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "ко може шта да ради", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Ко може да се придружи групи", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "Зашто желите ово да пријавите?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Да обришем резервну копију како би направио нови сигурносни кључ?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Са овим адресама можете опоравити своју лозинку.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "напишите поруку…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "yes": "Да", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "Ви", - "@you": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Више не учествујете у овом ћаскању", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Забрањено вам је ово ћаскање", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Ваш јавни кључ", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@reportErrorDescription": {}, - "@addAccount": {}, - "@chatHasBeenAddedToThisSpace": {}, - "@unsupportedAndroidVersion": {}, - "@widgetJitsi": {}, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@oneClientLoggedOut": {}, - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "@nextAccount": {}, - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@youAcceptedTheInvitation": {}, - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "@sendOnEnter": {}, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@link": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@previousAccount": {}, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@widgetNameError": {}, - "@addToBundle": {}, - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "@addWidget": {}, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_markasgroup": {}, - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "@saveKeyManuallyDescription": {}, - "@editBundlesForAccount": {}, - "@whyIsThisMessageEncrypted": {}, - "@setChatDescription": {}, - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "@importFromZipFile": {}, - "@dehydrateWarning": {}, - "@noOtherDevicesFound": {}, - "@yourChatBackupHasBeenSetUp": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@videoCallsBetaWarning": {}, - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "@homeserver": {}, - "@repeatPassword": {}, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@optionalRedactReason": {}, - "@dehydrate": {}, - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "@sendAsText": { - "type": "text" - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@commandInvalid": { - "type": "text" - }, - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@allChats": { - "type": "text", - "placeholders": {} - }, - "@reportUser": {}, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@addToSpace": {}, - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "@redactMessageDescription": {}, - "@recoveryKey": {}, - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "@invalidInput": {}, - "@dehydrateTorLong": {}, - "@doNotShowAgain": {}, - "@report": {}, - "@unverified": {}, - "@serverRequiresEmail": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@addChatDescription": {}, - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@removeFromBundle": {}, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@newGroup": {}, - "@bundleName": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@roomUpgradeDescription": {}, - "@scanQrCode": {}, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@widgetName": {}, - "@errorAddingWidget": {}, - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "@commandHint_hug": {}, - "@replace": {}, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@newSpace": {}, - "@emojis": {}, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@hydrateTorLong": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@pinMessage": {}, - "@invite": {}, - "@enableMultiAccounts": {}, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@placeCall": {} -} \ No newline at end of file + "@@last_modified": "2021-08-14 12:41:09.857024", + "about": "О програму", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Прихвати", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} прихвата позивницу", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Налог", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} укључи шифровање с краја на крај", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Додај е-адресу", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "admin": "Админ", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "алијас", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "Сви", + "@all": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} одговори на позив", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "свако може да се придружи", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "appLock": "Закључавање апликације", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "archive": "Архива", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Да ли је гостима дозвољен приступ", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Сигурни сте?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Заиста желите да се одјавите?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Да бисте могли да пријавите другу особу, унесите своју безбедносну фразу или кључ опоравка.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Прихватате ли захтев за верификацију од корисника {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerLoginTypesException": "Домаћи сервер подржава начине пријаве:\n{serverVersions}\nали ова апликација подржава само:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "Домаћи сервер подржава верзије:\n{serverVersions}\nали ова апликација подржава само {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "Забрани у ћаскању", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Забрањен", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} забрани корисника {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Блокирај уређај", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Блокиран", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Поруке Бота", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "Откажи", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changeDeviceName": "Промени назив уређаја", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} промени аватар ћаскања", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} промени опис ћаскања у: „{description}“", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} промени назив ћаскања у: „{chatname}“", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} измени дозволе ћаскања", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} промени приказно име на: „{displayname}“", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} измени правила за приступ гостију", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} измени правила за приступ гостију на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} измени видљивост историје", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} измени видљивост историје на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} измени правила приступања", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} измени правила приступања на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} измени свој аватар", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} измени алијас собе", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} измени везу позивнице", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Измени лозинку", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Промени домаћи сервер", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Измените изглед", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Измени назив групе", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Измените свој аватар", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шифровање је покварено", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Ћаскање", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Копија ћаскања", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "Ваша резервна копија ћаскања је обезбеђена кључем. Немојте да га изгубите.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Детаљи ћаскања", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chats": "Ћаскања", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Изаберите јаку лозинку", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Очисти архиву", + "@clearArchive": {}, + "close": "Затвори", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Блокирај задатог корисника за ову собу", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Шаљи ХТМЛ обликован текст", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Позови задатог корисника у собу", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Придружи се наведеној соби", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Уклони задатог корисника из собе", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Напусти ову собу", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Опишите себе", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomnick": "Поставља ваш надимак за ову собу", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Подеси ниво задатог корисника (подразумевано: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Шаљи неформатиран текст", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Шаљи одговор као реакцију", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Пошаљи текст", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Скини забрану задатом кориснику за ову собу", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "compareEmojiMatch": "Упоредите и проверите да су емоџији идентични као на другом уређају:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Упоредите и проверите да су следећи бројеви идентични као на другом уређају:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Подешавање ћаскања", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "Потврди", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Повежи се", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Особа је позвана у групу", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Садржи приказно име", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Садржи корисничко име", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "Садржај је пријављен администраторима сервера", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Копирано у клипборд", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Копирај", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Копирај у клипборд", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Не могу да дешифрујем поруку: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "учесника: {count}", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Направи", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} направи ћаскање", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "currentlyActive": "Тренутно активно", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "тамни", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day} {month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day} {month} {year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Ово ће деактивирати ваш кориснички налог. Не може се повратити! Сигурни сте?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Подразумевани ниво приступа", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "delete": "Обриши", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Обриши налог", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Брисање поруке", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Уређај", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "ИД уређаја", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Уређаји", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "Директна ћаскања", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Име за приказ је измењено", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Преузми фајл", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "Уреди", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Уреди блокиране сервере", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Уреди име за приказ", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Уреди алијасе собе", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Уређује аватар собе", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Емоти већ постоји!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Неисправна скраћеница за емоти!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Пакети емотија за собу", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Поставке емотија", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "скраћеница", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Морате да изаберете скраћеницу и слику за емоти!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "празно ћаскање", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Глобално укључи пакет емотија", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Укључује шифровање", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Шифровање више нећете моћи да искључите. Сигурни сте?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Шифровано", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryption": "Шифровање", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Шифровање није укључено", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} заврши позив", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "Унесите адресу е-поште", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Унесите свој домаћи сервер", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "Све је спремно!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Екстремно увредљив", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "fileName": "Назив фајла", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Величина фонта", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "Напред", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "од приступања", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "од позивања", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Иди у нову собу", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Група", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Група је јавна", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "Групе", + "@groups": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Група са корисником {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "гости су забрањени", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "гости могу приступити", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} поништи позивницу за корисника {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Помоћ", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Сакриј редиговане догађаје", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Сакриј непознате догађаје", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Колико је увредљив овај садржај?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "ИД", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Идентитет", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Игнориши", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Игнорисани корисници", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Кликнуо сам на везу", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Неисправна фраза или кључ опоравка", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Није увредљив", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Позивање особа", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Позови особу у групу {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Позван", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "{username} позва корисника {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "само позвани корисници", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Позивнице за мене", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} вас позива у FluffyChat. \n1. Инсталирајте FluffyChat: https://fluffychat.im \n2. Региструјте се или пријавите \n3. Отворите везу позивнице: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "куца…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} се придружи ћаскању", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Придружи се соби", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} избаци корисника {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} избаци и забрани корисника {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Избаци из ћаскања", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Последња активност: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Напусти", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Напусти ћаскање", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Лиценца", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "светли", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Учитај још {count} учесника", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Учитавам… Сачекајте.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Учитај још…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Пријава", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Пријава на {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Одјава", + "@logout": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Измене чланова", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "Спомени", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "Поруке", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "Модератор", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Ућуткај ћаскање", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "За сада, потребан је Пантелејмон (Pantalaimon) да бисте користили шифровање с краја на крај.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "Ново ћаскање", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Нова порука — FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Нови захтев за верификацију!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Следеће", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "Не", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Нема везе са сервером", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Нема емотија. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Шифровање се може активирати након што соба престане да буде јавно доступна.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Чини се да немате Гугл услуге на телефону. То је добра одлука за вашу приватност! Да би се протурале нотификације у FluffyChat, препоручујемо коришћење https://microg.org/ или https://unifiedpush.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "none": "Ништа", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Још нисте одредили начин за опоравак лозинке.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Нема дозвола", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Нисам нашао собе…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "Обавештења", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Обавештења укључена за овај налог", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count} корисника куца…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "offensive": "Увредљив", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "Ван везе", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "у реду", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "На вези", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Резерва кључева на мрежи је укључена", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Нажалост, дошло је до грешке при подешавању дотурања обавештења.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Нешто је пошло наопако…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Отворите апликацију да прочитате поруке", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Отвори камеру", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "or": "или", + "@or": { + "type": "text", + "placeholders": {} + }, + "participant": "Учесник", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "фраза или кључ опоравка", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Лозинка", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Заборављена лозинка", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Лозинка је промењена", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Опоравак лозинке", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "Људи", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Избор слике", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Закачи", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Пусти {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChoose": "Изаберите", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Изаберите код за пролаз", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Кликните на везу у примљеној е-пошти па наставите.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Унесите 4 цифре или оставите празно да не закључавате апликацију.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Унесите своју лозинку", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Унесите свој пин", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Унесите своје корисничко име", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Испратите упутства на веб сајту и тапните на „Следеће“.", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Приватност", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Јавне собе", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Правила протурања", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "reason": "Разлог", + "@reason": { + "type": "text", + "placeholders": {} + }, + "recording": "Снимам", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} редигова догађај", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactMessage": "Редигуј поруку", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "register": "Регистрација", + "@register": { + "type": "text", + "placeholders": {} + }, + "reject": "Одбиј", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} одби позивницу", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Поново се придружи", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Уклони", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Уклони све остале уређаје", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Уклонио корисник {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Уклони уређај", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Уклони изгнанство", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Уклоните свој аватар", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Приказуј обогаћен садржај поруке", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Замени собу новијом верзијом", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "Одговори", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Пријави поруку", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Затражи дозволу", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Соба је надограђена", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Верзија собе", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "search": "Претражи", + "@search": { + "type": "text", + "placeholders": {} + }, + "security": "Безбедност", + "@security": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "{username} прегледа", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "send": "Пошаљи", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Пошаљи поруку", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Пошаљи аудио", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Пошаљи фајл", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Пошаљи слику", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Слање порука", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Пошаљи оригинал", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Пошаљи видео", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} посла фајл", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} посла аудио", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} посла слику", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} посла налепницу", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} посла видео", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} посла податке о позиву", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setAsCanonicalAlias": "Постави као главни алијас", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "постави посебне емотије", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Поставља везу позивнице", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Одреди ниво дозволе", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Постави статус", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Поставке", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Подели", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} подели локацију", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "showPassword": "Прикажи лозинку", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Јединствена пријава", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "skip": "Прескочи", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Изворни код", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} започе позив", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "status": "Стање", + "@status": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Како сте данас?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Пошаљи", + "@submit": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "системски", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Не поклапају се", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Поклапају се", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Мењај омиљеност", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Мењај ућутканост", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Означи не/прочитано", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Превише упита. Покушајте касније!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Пренос са другог уређаја", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Покушај слање поново", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Недоступно", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} одблокира корисника {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "Одблокирај уређај", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Непознат уређај", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Непознат алгоритам шифровања", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Непознат догађај „{type}“", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unmuteChat": "Врати обавештења", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Откачи", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, other{непрочитаних ћаскања: {unreadCount}}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "userAndOthersAreTyping": "{username} и {count} корисника куцају…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} и {username2} куцају…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} куца…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "{username} напусти ћаскање", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Корисничко име", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} посла {type} догађај", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verified": "Оверен", + "@verified": { + "type": "text", + "placeholders": {} + }, + "verify": "Верификуј", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Покрени верификацију", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "Успешно сте верификовали!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Верификујем други налог", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Видео позив", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Одреди видљивост историје", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "видљиво свим учесницима", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "видљиво свима", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Гласовна порука", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Чекам да саговорник прихвати захтев…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Чекам да саговорник прихвати емоџије…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Чекам да саговорник прихвати бројеве…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Тапета", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "Упозорење!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Послали смо вам е-пошту", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "ко може шта да ради", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Ко може да се придружи групи", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Зашто желите ово да пријавите?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Да обришем резервну копију како би направио нови сигурносни кључ?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Са овим адресама можете опоравити своју лозинку.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "напишите поруку…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Да", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Ви", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Више не учествујете у овом ћаскању", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Забрањено вам је ово ћаскање", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Ваш јавни кључ", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + } +} From 2cc859e788e8b5da34d375853cfada099a4be712 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:42 +0000 Subject: [PATCH 068/106] Translated using Weblate (Hebrew) Currently translated at 6.9% (45 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/he/ --- assets/l10n/intl_he.arb | 3428 +++++++++++++++------------------------ 1 file changed, 1300 insertions(+), 2128 deletions(-) diff --git a/assets/l10n/intl_he.arb b/assets/l10n/intl_he.arb index 87d50b339..d33fc8af4 100644 --- a/assets/l10n/intl_he.arb +++ b/assets/l10n/intl_he.arb @@ -1,2129 +1,1301 @@ { - "@@last_modified": "2021-08-14 12:41:10.036931", - "about": "אודות", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "קבל", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} קיבל את ההזמנה", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "חשבון", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} הפעיל הצפנה מקצה לקצה", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "admin": "מנהל", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "כינוי", - "@alias": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} ענה לשיחה", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "כל אחד יכול להצטרף", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "archive": "ארכיון", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "האם משתמשים אורחים מורשים להצטרף", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "האם אתה בטוח?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "כדי שתוכל לחתום על משתמש אחר , הזן את הסיסמה שלך או את מפתח השחזור.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "לקבל בקשת אימות זו מ- {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "שנה סיסמא", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "appLock": "נעילת אפליקציה", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "cancel": "ביטול", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "addEmail": "הוסף מייל", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "all": "הכל", - "@all": { - "type": "text", - "placeholders": {} - }, - "allChats": "כל הצ'אטים", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "banned": "חסום", - "@banned": { - "type": "text", - "placeholders": {} - }, - "sendOnEnter": "שלח בכניסה", - "@sendOnEnter": {}, - "badServerLoginTypesException": "שרת הבית תומך בסוגי הכניסה:\n{serverVersions}\nאבל אפליקציה זו תומכת רק ב:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} שינה את כללי הגישה לאורחים ל: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} שינה את כללי ההצטרפות", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatNameTo": "{username} שינה את שם הצ'אט ל: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheRoomInvitationLink": "{username} שינה את קישור ההזמנה", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "repeatPassword": "כתוב שוב את הסיסמה", - "@repeatPassword": {}, - "areYouSureYouWantToLogout": "האם אתה בטוח שברצונך לצאת?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "chat": "צ׳אט", - "@chat": { - "type": "text", - "placeholders": {} - }, - "autoplayImages": "הפעל אוטומטית מדבקות ואנימציות מונפשים", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "badServerVersionsException": "שרת הבית תומך בגרסאות:\n{serverVersions}\nאבל האפליקציה הזו תומכת רק ב-{supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "צאט חסום", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} חסם את {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "חסום מכשיר", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "חסום", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "הודעות בוט", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "לא ניתן לפתוח את ה-URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changeDeviceName": "שנה את שם המכשיר", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} שינה את האווטאר של הצ'אט", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} שינה את תיאור הצ'אט ל: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatPermissions": "{username} שינה את הרשאות הצ'אט", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} שינה את שם התצוגה שלו ל: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} שינה את כללי הגישה לאורחים", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibility": "{username} שינה את נראות ההיסטוריה", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} שינה את נראות ההיסטוריה ל: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRulesTo": "{username} שינה את כללי ההצטרפות ל: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} שינה את האווטאר שלו", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} שינה את כינוי החדר", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changeTheHomeserver": "שנה את שרת הבית", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "שנה את הסגנון שלך", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "שנה את שם הקבוצה", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "שינוי האווטאר שלך", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "ההצפנה נפגמה", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "yourChatBackupHasBeenSetUp": "גיבוי הצ'אט שלך הוגדר.", - "@yourChatBackupHasBeenSetUp": {}, - "chatBackup": "גיבוי צ'אט", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "חסום את המשתמש הנתון מהחדר הזה", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_clearcache": "נקה מטמון", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandHint_create": "צור צ'אט קבוצתי ריק\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_discardsession": "התעלם מהסשן", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "commandHint_dm": "התחל צ'אט ישיר\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "commandHint_html": "שלח טקסט בתבנית HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "הזמן את המשתמש הנתון לחדר זה", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "הצטרף לחדר הנתון", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "הסר את המשתמש הנתון מהחדר הזה", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "עזוב את החדר הזה", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_me": "תאר את עצמך", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "chatDetails": "פרטי צ'אט", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "גיבוי הצ'אט שלך מאובטח באמצעות מפתח אבטחה. אנא וודא שאתה לא מאבד אותו.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "צ'אט נוסף למרחב הזה", - "@chatHasBeenAddedToThisSpace": {}, - "chats": "צ'אטים", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "בחר סיסמה חזקה", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "נקה ארכיון", - "@clearArchive": {}, - "close": "סגור", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_myroomavatar": "הגדר את התמונה שלך לחדר זה (על ידי mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "הגדר את שם התצוגה שלך עבור חדר זה", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "addToSpace": "הוסף לחלל", - "@addToSpace": {}, - "commandHint_unban": "בטל את החסימה של המשתמש הנתון מהחדר הזה", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "countParticipants": "{count} משתתפים", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "צור", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "{username} יצר את הצ'אט", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "currentlyActive": "פעיל כעת", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "כהה", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{month}-{day}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "defaultPermissionLevel": "רמת הרשאת ברירת מחדל", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "מחק חשבון", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "מחק הודעה", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "deviceId": "מזהה מכשיר", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "התקנים", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "צ'אטים ישירים", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "הורד קובץ", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "ערוך", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "ערוך את שם התצוגה", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "ערוך כינויים לחדר", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "אימוט כבר קיים!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "צ'אט ריק", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "encrypted": "מוצפן", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "enterAnEmailAddress": "הזן כתובת דואר אלקטרוני", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "הזן את שרת הבית שלך", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "הכל מוכן!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "fileName": "שם קובץ", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "גודל גופן", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "העבר", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "מהצטרפות", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "מההזמנה", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "עבור לחדר החדש", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "הקבוצה ציבורית", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groupWith": "קבוצה עם {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "אורחים אסורים", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "אורחים יכולים להצטרף", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "id": "מזהה", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "זהות", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "משתמשים שהתעלמו מהם", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "ביטוי סיסמה או מפתח שחזור שגויים", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "הזמן איש קשר", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "invited": "הזמין", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "{username} הזמין את {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "משתמשים מוזמנים בלבד", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "הזמנה בשבילי", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} הזמין אותך ל-FluffyChat.\n1. התקן את FluffyChat: https://fluffychat.im\n2. הירשם או היכנס\n3. פתח את קישור ההזמנה: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "מקליד/ה…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "{username} הצטרף לצ'אט", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "הצטרף לחדר", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "{username} בעט ב {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "{username} בעט וחסם {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "בעיטה מהצ'אט", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "פעילות אחרונה: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leftTheChat": "עזב את הצ'אט", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "loadingPleaseWait": "טוען אנא המתן.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "טען עוד…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "locationDisabledNotice": "שירותי המיקום מושבתים. אנא הפעל אותם כדי לשתף את המיקום שלך.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "copy": "העתק", - "@copy": { - "type": "text", - "placeholders": {} - }, - "commandHint_send": "שלח טקסט", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_op": "הגדרת רמת צריכת החשמל של המשתמש הנתון (ברירת מחדל: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "שלח טקסט לא מעוצב", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "שלח תשובה כתגובה", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "containsUserName": "מכיל שם משתמש", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "createNewSpace": "חלל חדש", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "אפשר הצפנה", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "הזמן איש קשר אל {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "dateWithYear": "{year}-{month}-{day}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "פעולה זו תשבית את חשבון המשתמש שלך. אי אפשר לבטל את זה! האם אתה בטוח?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "device": "מכשיר", - "@device": { - "type": "text", - "placeholders": {} - }, - "group": "קבוצה", - "@group": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "שם התצוגה השתנה", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "ערוך שרתים חסומים", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "עריכת אווטאר של חדר", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} סיים את השיחה", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "groups": "קבוצות", - "@groups": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "לא תוכל לבטל את ההצפנה יותר. האם אתה בטוח?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encryption": "הצפנה", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "שגיאה בהשגת מיקום: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "hasWithdrawnTheInvitationFor": "{username} ביטל את ההזמנה עבור {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "hideRedactedEvents": "הסתר אירועים מצונזרים", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "ההצפנה אינה מופעלת", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "פוגעני ביותר", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "הסתר אירועים לא ידועים", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "טען {count} משתתפים נוספים", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "homeserver": "שרת בית", - "@homeserver": {}, - "ignore": "התעלם", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "לחצתי על הקישור", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "leave": "לעזוב", - "@leave": { - "type": "text", - "placeholders": {} - }, - "license": "רשיון", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "בהיר", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "delete": "מחיקה", - "@delete": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "לֹא פּוֹגֵעַ", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "configureChat": "קביעת תצורה של צ'אט", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "לאשר", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "התחבר", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "איש הקשר הוזמן לקבוצה", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "מכיל שם תצוגה", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "התוכן דווח למנהלי השרת", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "הועתק ללוח הגזירים", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "commandInvalid": "הפקודה אינה חוקית", - "@commandInvalid": { - "type": "text" - }, - "commandMissing": "{command} אינו פקודה.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "compareEmojiMatch": "השווה וודא שהאימוג'י הבאים תואמים לאלו של המכשיר השני:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "השווה וודא שהמספרים הבאים תואמים לאלה של המכשיר השני:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "העתק ללוח", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "לא ניתן לפענח הודעה: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "help": "עזרה", - "@help": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "עד כמה התוכן הזה פוגעני?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "הרשאת המיקום נדחתה. אנא אפשר את היכולת לשתף את מיקומך.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "login": "כניסה", - "@login": { - "type": "text", - "placeholders": {} - }, - "moderator": "מנחה", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "שים לב שאתה צריך Pantalaimon כדי להשתמש בהצפנה מקצה לקצה לעת עתה.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "צ'אט חדש", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "בקשת אימות חדשה!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "הבא", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "לא", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "אין חיבור לשרת", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "אתה יכול להפעיל הצפנה רק כשהחדר כבר לא נגיש לציבור.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "לא נמצאו חדרים…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "התראות", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "{count} משתמשים מקלידים…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "obtainingLocation": "משיג מיקום…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "גיבוי מפתח מקוון מופעל", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "אופס! למרבה הצער, אירעה שגיאה בעת הגדרת התראות.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "אופס, משהו השתבש…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "פתח את האפליקציה לקריאת הודעות", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "oneClientLoggedOut": "אחד מהמכשירים שלך התנתק", - "@oneClientLoggedOut": {}, - "addAccount": "הוסף חשבון", - "@addAccount": {}, - "editBundlesForAccount": "ערוך חבילות עבור חשבון זה", - "@editBundlesForAccount": {}, - "participant": "משתתף", - "@participant": { - "type": "text", - "placeholders": {} - }, - "password": "סיסמה", - "@password": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "אנא לחץ על הקישור במייל ולאחר מכן המשך.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "אנא הזן 4 ספרות או השאר ריק כדי להשבית את נעילת האפליקציה.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "online": "מחובר/ת", - "@online": { - "type": "text", - "placeholders": {} - }, - "addToBundle": "הוסף לחבילה", - "@addToBundle": {}, - "passphraseOrKey": "ביטוי סיסמה או מפתח שחזור", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "שכחתי סיסמה", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "הסיסמה שונתה", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "שחזור סיסמה", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "אנשים", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "בחר תמונה", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "play": "הפעל {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChoose": "אנא בחר", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "אנא בחר קוד גישה", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "נא הזן את הסיסמה שלך", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "אנא הזן את קוד הpin שלך", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pin": "קוד pin", - "@pin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "אנא הזן שם משתמש", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "הודעה חדשה ב-FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "נראה שאין לך שירותי גוגל בטלפון שלך. זו החלטה טובה לפרטיות שלך! כדי לקבל התרעות ב- FluffyChat אנו ממליצים להשתמש https://microg.org/ או https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} אינו שרת מטריקס, השתמש ב-{server2} במקום זאת?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "none": "ללא", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "עדיין לא הוספת דרך לשחזר את הסיסמה שלך.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "offensive": "פוגעני", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "התראות הופעלו עבור חשבון זה", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "bundleName": "שם החבילה", - "@bundleName": {}, - "offline": "לא מקוון", - "@offline": { - "type": "text", - "placeholders": {} - }, - "openVideoCamera": "פתח את המצלמה לסרטון", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "removeFromBundle": "הסר מחבילה זו", - "@removeFromBundle": {}, - "enableMultiAccounts": "(בטא) אפשר ריבוי חשבונות במכשיר זה", - "@enableMultiAccounts": {}, - "openInMaps": "פתיחה במפות", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "link": "קישור", - "@link": {}, - "serverRequiresEmail": "שרת זה צריך לאמת את כתובת הדואר האלקטרוני שלך לרישום.", - "@serverRequiresEmail": {}, - "logout": "יציאה", - "@logout": { - "type": "text", - "placeholders": {} - }, - "muteChat": "השתקת הצ'אט", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "scanQrCode": "סרוק קוד QR", - "@scanQrCode": {}, - "noPermission": "אין הרשאה", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "or": "או", - "@or": { - "type": "text", - "placeholders": {} - }, - "logInTo": "היכנס אל {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "memberChanges": "שינויים בחבר", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "הזכיר", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "הודעות", - "@messages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "פתח מצלמה", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "@reportErrorDescription": {}, - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "@reply": { - "type": "text", - "placeholders": {} - }, - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "@unsupportedAndroidVersion": {}, - "@widgetJitsi": {}, - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "@startFirstChat": {}, - "@callingAccount": {}, - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@setColorTheme": {}, - "@nextAccount": {}, - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "@warning": { - "type": "text", - "placeholders": {} - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "@youAcceptedTheInvitation": {}, - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "@remove": { - "type": "text", - "placeholders": {} - }, - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "@unbanUserDescription": {}, - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "@previousAccount": {}, - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "@widgetNameError": {}, - "@unpin": { - "type": "text", - "placeholders": {} - }, - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "@addWidget": {}, - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "@reason": { - "type": "text", - "placeholders": {} - }, - "@commandHint_markasgroup": {}, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "@makeAdminDescription": {}, - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "@saveKeyManuallyDescription": {}, - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "@whyIsThisMessageEncrypted": {}, - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@setChatDescription": {}, - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "@importFromZipFile": {}, - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "@dehydrateWarning": {}, - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "@noOtherDevicesFound": {}, - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@submit": { - "type": "text", - "placeholders": {} - }, - "@videoCallsBetaWarning": {}, - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@yes": { - "type": "text", - "placeholders": {} - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@username": { - "type": "text", - "placeholders": {} - }, - "@fileIsTooBigForServer": {}, - "@verified": { - "type": "text", - "placeholders": {} - }, - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@register": { - "type": "text", - "placeholders": {} - }, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@recording": { - "type": "text", - "placeholders": {} - }, - "@optionalRedactReason": {}, - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "@dehydrate": {}, - "@send": { - "type": "text", - "placeholders": {} - }, - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "@sendAsText": { - "type": "text" - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@skip": { - "type": "text", - "placeholders": {} - }, - "@appearOnTopDetails": {}, - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "@enterRoom": {}, - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "@reportUser": {}, - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "@recoveryKey": {}, - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "@invalidInput": {}, - "@dehydrateTorLong": {}, - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "@doNotShowAgain": {}, - "@report": {}, - "@status": { - "type": "text", - "placeholders": {} - }, - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "@unverified": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "@addChatDescription": {}, - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@you": { - "type": "text", - "placeholders": {} - }, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@search": { - "type": "text", - "placeholders": {} - }, - "@newGroup": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "@roomUpgradeDescription": {}, - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "@settings": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "@security": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "@widgetName": {}, - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@errorAddingWidget": {}, - "@commandHint_hug": {}, - "@replace": {}, - "@reject": { - "type": "text", - "placeholders": {} - }, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "@newSpace": {}, - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "@emojis": {}, - "@share": { - "type": "text", - "placeholders": {} - }, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@privacy": { - "type": "text", - "placeholders": {} - }, - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "@hydrateTorLong": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@verify": { - "type": "text", - "placeholders": {} - }, - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "@importNow": {}, - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "@pinMessage": {}, - "@invite": {}, - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@ok": { - "type": "text", - "placeholders": {} - }, - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "@screenSharingDetail": {}, - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "@placeCall": {} -} \ No newline at end of file + "@@last_modified": "2021-08-14 12:41:10.036931", + "about": "אודות", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "קבל", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} קיבל את ההזמנה", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "חשבון", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} הפעיל הצפנה מקצה לקצה", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "admin": "מנהל", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "כינוי", + "@alias": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} ענה לשיחה", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "כל אחד יכול להצטרף", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "ארכיון", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "האם משתמשים אורחים מורשים להצטרף", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "האם אתה בטוח?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "כדי שתוכל לחתום על משתמש אחר , הזן את הסיסמה שלך או את מפתח השחזור.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "לקבל בקשת אימות זו מ- {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "שנה סיסמא", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "appLock": "נעילת אפליקציה", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "cancel": "ביטול", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "addEmail": "הוסף מייל", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "all": "הכל", + "@all": { + "type": "text", + "placeholders": {} + }, + "allChats": "כל הצ'אטים", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "banned": "חסום", + "@banned": { + "type": "text", + "placeholders": {} + }, + "sendOnEnter": "שלח בכניסה", + "@sendOnEnter": {}, + "badServerLoginTypesException": "שרת הבית תומך בסוגי הכניסה:\n{serverVersions}\nאבל אפליקציה זו תומכת רק ב:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} שינה את כללי הגישה לאורחים ל: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} שינה את כללי ההצטרפות", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatNameTo": "{username} שינה את שם הצ'אט ל: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheRoomInvitationLink": "{username} שינה את קישור ההזמנה", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "repeatPassword": "כתוב שוב את הסיסמה", + "@repeatPassword": {}, + "areYouSureYouWantToLogout": "האם אתה בטוח שברצונך לצאת?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "chat": "צ׳אט", + "@chat": { + "type": "text", + "placeholders": {} + }, + "autoplayImages": "הפעל אוטומטית מדבקות ואנימציות מונפשים", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "badServerVersionsException": "שרת הבית תומך בגרסאות:\n{serverVersions}\nאבל האפליקציה הזו תומכת רק ב-{supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "צאט חסום", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} חסם את {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "חסום מכשיר", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "חסום", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "הודעות בוט", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "לא ניתן לפתוח את ה-URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changeDeviceName": "שנה את שם המכשיר", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} שינה את האווטאר של הצ'אט", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} שינה את תיאור הצ'אט ל: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatPermissions": "{username} שינה את הרשאות הצ'אט", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} שינה את שם התצוגה שלו ל: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} שינה את כללי הגישה לאורחים", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibility": "{username} שינה את נראות ההיסטוריה", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} שינה את נראות ההיסטוריה ל: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRulesTo": "{username} שינה את כללי ההצטרפות ל: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} שינה את האווטאר שלו", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} שינה את כינוי החדר", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changeTheHomeserver": "שנה את שרת הבית", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "שנה את הסגנון שלך", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "שנה את שם הקבוצה", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "שינוי האווטאר שלך", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "ההצפנה נפגמה", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "גיבוי הצ'אט שלך הוגדר.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "גיבוי צ'אט", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "חסום את המשתמש הנתון מהחדר הזה", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "נקה מטמון", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "צור צ'אט קבוצתי ריק\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "התעלם מהסשן", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "התחל צ'אט ישיר\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "שלח טקסט בתבנית HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "הזמן את המשתמש הנתון לחדר זה", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "הצטרף לחדר הנתון", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "הסר את המשתמש הנתון מהחדר הזה", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "עזוב את החדר הזה", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "תאר את עצמך", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "chatDetails": "פרטי צ'אט", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "גיבוי הצ'אט שלך מאובטח באמצעות מפתח אבטחה. אנא וודא שאתה לא מאבד אותו.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "צ'אט נוסף למרחב הזה", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "צ'אטים", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "בחר סיסמה חזקה", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "נקה ארכיון", + "@clearArchive": {}, + "close": "סגור", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_myroomavatar": "הגדר את התמונה שלך לחדר זה (על ידי mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "הגדר את שם התצוגה שלך עבור חדר זה", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "addToSpace": "הוסף לחלל", + "@addToSpace": {}, + "commandHint_unban": "בטל את החסימה של המשתמש הנתון מהחדר הזה", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "countParticipants": "{count} משתתפים", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "צור", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} יצר את הצ'אט", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "currentlyActive": "פעיל כעת", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "כהה", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "defaultPermissionLevel": "רמת הרשאת ברירת מחדל", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "מחק חשבון", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "מחק הודעה", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deviceId": "מזהה מכשיר", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "התקנים", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "צ'אטים ישירים", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "הורד קובץ", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "ערוך", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "ערוך את שם התצוגה", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "ערוך כינויים לחדר", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "אימוט כבר קיים!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "צ'אט ריק", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "encrypted": "מוצפן", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "enterAnEmailAddress": "הזן כתובת דואר אלקטרוני", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "הזן את שרת הבית שלך", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "הכל מוכן!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "fileName": "שם קובץ", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "גודל גופן", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "העבר", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "מהצטרפות", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "מההזמנה", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "עבור לחדר החדש", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "הקבוצה ציבורית", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "קבוצה עם {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "אורחים אסורים", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "אורחים יכולים להצטרף", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "id": "מזהה", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "זהות", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "משתמשים שהתעלמו מהם", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "ביטוי סיסמה או מפתח שחזור שגויים", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "הזמן איש קשר", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "invited": "הזמין", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "{username} הזמין את {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "משתמשים מוזמנים בלבד", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "הזמנה בשבילי", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} הזמין אותך ל-FluffyChat.\n1. התקן את FluffyChat: https://fluffychat.im\n2. הירשם או היכנס\n3. פתח את קישור ההזמנה: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "מקליד/ה…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} הצטרף לצ'אט", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "הצטרף לחדר", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} בעט ב {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} בעט וחסם {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "בעיטה מהצ'אט", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "פעילות אחרונה: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leftTheChat": "עזב את הצ'אט", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "loadingPleaseWait": "טוען אנא המתן.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "טען עוד…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "locationDisabledNotice": "שירותי המיקום מושבתים. אנא הפעל אותם כדי לשתף את המיקום שלך.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "copy": "העתק", + "@copy": { + "type": "text", + "placeholders": {} + }, + "commandHint_send": "שלח טקסט", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_op": "הגדרת רמת צריכת החשמל של המשתמש הנתון (ברירת מחדל: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "שלח טקסט לא מעוצב", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "שלח תשובה כתגובה", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "containsUserName": "מכיל שם משתמש", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "createNewSpace": "חלל חדש", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "אפשר הצפנה", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "הזמן איש קשר אל {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "פעולה זו תשבית את חשבון המשתמש שלך. אי אפשר לבטל את זה! האם אתה בטוח?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "device": "מכשיר", + "@device": { + "type": "text", + "placeholders": {} + }, + "group": "קבוצה", + "@group": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "שם התצוגה השתנה", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "ערוך שרתים חסומים", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "עריכת אווטאר של חדר", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} סיים את השיחה", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "groups": "קבוצות", + "@groups": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "לא תוכל לבטל את ההצפנה יותר. האם אתה בטוח?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "הצפנה", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "שגיאה בהשגת מיקום: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "hasWithdrawnTheInvitationFor": "{username} ביטל את ההזמנה עבור {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "hideRedactedEvents": "הסתר אירועים מצונזרים", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "ההצפנה אינה מופעלת", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "פוגעני ביותר", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "הסתר אירועים לא ידועים", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "טען {count} משתתפים נוספים", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "homeserver": "שרת בית", + "@homeserver": {}, + "ignore": "התעלם", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "לחצתי על הקישור", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "leave": "לעזוב", + "@leave": { + "type": "text", + "placeholders": {} + }, + "license": "רשיון", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "בהיר", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "delete": "מחיקה", + "@delete": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "לֹא פּוֹגֵעַ", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "configureChat": "קביעת תצורה של צ'אט", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "לאשר", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "התחבר", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "איש הקשר הוזמן לקבוצה", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "מכיל שם תצוגה", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "התוכן דווח למנהלי השרת", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "הועתק ללוח הגזירים", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "commandInvalid": "הפקודה אינה חוקית", + "@commandInvalid": { + "type": "text" + }, + "commandMissing": "{command} אינו פקודה.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "השווה וודא שהאימוג'י הבאים תואמים לאלו של המכשיר השני:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "השווה וודא שהמספרים הבאים תואמים לאלה של המכשיר השני:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "העתק ללוח", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "לא ניתן לפענח הודעה: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "help": "עזרה", + "@help": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "עד כמה התוכן הזה פוגעני?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "הרשאת המיקום נדחתה. אנא אפשר את היכולת לשתף את מיקומך.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "login": "כניסה", + "@login": { + "type": "text", + "placeholders": {} + }, + "moderator": "מנחה", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "שים לב שאתה צריך Pantalaimon כדי להשתמש בהצפנה מקצה לקצה לעת עתה.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "צ'אט חדש", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "בקשת אימות חדשה!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "הבא", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "לא", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "אין חיבור לשרת", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "אתה יכול להפעיל הצפנה רק כשהחדר כבר לא נגיש לציבור.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "לא נמצאו חדרים…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "התראות", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "{count} משתמשים מקלידים…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "obtainingLocation": "משיג מיקום…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "גיבוי מפתח מקוון מופעל", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "אופס! למרבה הצער, אירעה שגיאה בעת הגדרת התראות.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "אופס, משהו השתבש…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "פתח את האפליקציה לקריאת הודעות", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "אחד מהמכשירים שלך התנתק", + "@oneClientLoggedOut": {}, + "addAccount": "הוסף חשבון", + "@addAccount": {}, + "editBundlesForAccount": "ערוך חבילות עבור חשבון זה", + "@editBundlesForAccount": {}, + "participant": "משתתף", + "@participant": { + "type": "text", + "placeholders": {} + }, + "password": "סיסמה", + "@password": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "אנא לחץ על הקישור במייל ולאחר מכן המשך.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "אנא הזן 4 ספרות או השאר ריק כדי להשבית את נעילת האפליקציה.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "online": "מחובר/ת", + "@online": { + "type": "text", + "placeholders": {} + }, + "addToBundle": "הוסף לחבילה", + "@addToBundle": {}, + "passphraseOrKey": "ביטוי סיסמה או מפתח שחזור", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "שכחתי סיסמה", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "הסיסמה שונתה", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "שחזור סיסמה", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "אנשים", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "בחר תמונה", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "play": "הפעל {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChoose": "אנא בחר", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "אנא בחר קוד גישה", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "נא הזן את הסיסמה שלך", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "אנא הזן את קוד הpin שלך", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pin": "קוד pin", + "@pin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "אנא הזן שם משתמש", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "הודעה חדשה ב-FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "נראה שאין לך שירותי גוגל בטלפון שלך. זו החלטה טובה לפרטיות שלך! כדי לקבל התרעות ב- FluffyChat אנו ממליצים להשתמש https://microg.org/ או https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} אינו שרת מטריקס, השתמש ב-{server2} במקום זאת?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "none": "ללא", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "עדיין לא הוספת דרך לשחזר את הסיסמה שלך.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "offensive": "פוגעני", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "התראות הופעלו עבור חשבון זה", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "bundleName": "שם החבילה", + "@bundleName": {}, + "offline": "לא מקוון", + "@offline": { + "type": "text", + "placeholders": {} + }, + "openVideoCamera": "פתח את המצלמה לסרטון", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "removeFromBundle": "הסר מחבילה זו", + "@removeFromBundle": {}, + "enableMultiAccounts": "(בטא) אפשר ריבוי חשבונות במכשיר זה", + "@enableMultiAccounts": {}, + "openInMaps": "פתיחה במפות", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "link": "קישור", + "@link": {}, + "serverRequiresEmail": "שרת זה צריך לאמת את כתובת הדואר האלקטרוני שלך לרישום.", + "@serverRequiresEmail": {}, + "logout": "יציאה", + "@logout": { + "type": "text", + "placeholders": {} + }, + "muteChat": "השתקת הצ'אט", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "scanQrCode": "סרוק קוד QR", + "@scanQrCode": {}, + "noPermission": "אין הרשאה", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "or": "או", + "@or": { + "type": "text", + "placeholders": {} + }, + "logInTo": "היכנס אל {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "memberChanges": "שינויים בחבר", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "הזכיר", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "הודעות", + "@messages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "פתח מצלמה", + "@openCamera": { + "type": "text", + "placeholders": {} + } +} From e1f6a58100ad17c2f9ab27300f0e07b30418f83c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:40 +0000 Subject: [PATCH 069/106] Translated using Weblate (Persian) Currently translated at 75.3% (491 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/fa/ --- assets/l10n/intl_fa.arb | 74 +---------------------------------------- 1 file changed, 1 insertion(+), 73 deletions(-) diff --git a/assets/l10n/intl_fa.arb b/assets/l10n/intl_fa.arb index b51439b8e..d62cb8884 100644 --- a/assets/l10n/intl_fa.arb +++ b/assets/l10n/intl_fa.arb @@ -2300,78 +2300,6 @@ "@signInWithPassword": {}, "pleaseTryAgainLaterOrChooseDifferentServer": "لطفا بعدا تلاش کنید یا سرور دیگری انتخاب کنید.", "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@setColorTheme": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@tryAgain": {}, - "@unbanUserDescription": {}, - "@messagesStyle": {}, - "@chatDescription": {}, - "@pushNotificationsNotAvailable": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@makeAdminDescription": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@optionalRedactReason": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@redactMessageDescription": {}, - "@invalidInput": {}, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@invitePrivateChat": {}, - "@importEmojis": {}, - "@noChatDescriptionYet": {}, - "@learnMore": {}, "notAnImage": "یک فایل تصویری نیست.", - "@notAnImage": {}, - "@chatDescriptionHasBeenChanged": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@profileNotFound": {}, - "@shareInviteLink": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@replace": {}, - "@createGroup": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@invite": {} + "@notAnImage": {} } From 628118b82bcf7d96429f3aa3790c243efc29e116 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:42 +0000 Subject: [PATCH 070/106] Translated using Weblate (Irish) Currently translated at 52.1% (340 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ga/ --- assets/l10n/intl_ga.arb | 4199 ++++++++++++++++++--------------------- 1 file changed, 1952 insertions(+), 2247 deletions(-) diff --git a/assets/l10n/intl_ga.arb b/assets/l10n/intl_ga.arb index c4ba3b5bd..5d01bfef6 100644 --- a/assets/l10n/intl_ga.arb +++ b/assets/l10n/intl_ga.arb @@ -1,2248 +1,1953 @@ { - "you": "Tú", - "@you": { - "type": "text", - "placeholders": {} - }, - "yes": "Tá", - "@yes": { - "type": "text", - "placeholders": {} - }, - "warning": "Rabhadh!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Cúlbhrat", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "verify": "Deimhnigh", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verified": "Deimhnithe", - "@verified": { - "type": "text", - "placeholders": {} - }, - "username": "Ainm úsáideora", - "@username": { - "type": "text", - "placeholders": {} - }, - "unpin": "Bain biorán", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Níl ar fáil", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "systemTheme": "Córas", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "submit": "Cuir isteach", - "@submit": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "Conas atá tú inniu?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "status": "Staid", - "@status": { - "type": "text", - "placeholders": {} - }, - "skip": "Léim", - "@skip": { - "type": "text", - "placeholders": {} - }, - "share": "Roinn", - "@share": { - "type": "text", - "placeholders": {} - }, - "settings": "Socruithe", - "@settings": { - "type": "text", - "placeholders": {} - }, - "send": "Seol", - "@send": { - "type": "text", - "placeholders": {} - }, - "security": "Slándáil", - "@security": { - "type": "text", - "placeholders": {} - }, - "search": "Cuardaigh", - "@search": { - "type": "text", - "placeholders": {} - }, - "reply": "Freagair", - "@reply": { - "type": "text", - "placeholders": {} - }, - "remove": "Bain", - "@remove": { - "type": "text", - "placeholders": {} - }, - "rejoin": "Téigh ar ais isteach", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "reject": "Diúltaigh", - "@reject": { - "type": "text", - "placeholders": {} - }, - "register": "Cláraigh", - "@register": { - "type": "text", - "placeholders": {} - }, - "recording": "Ag Taifeadadh", - "@recording": { - "type": "text", - "placeholders": {} - }, - "reason": "Fáth", - "@reason": { - "type": "text", - "placeholders": {} - }, - "privacy": "Príobháideacht", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "pin": "Biorán", - "@pin": { - "type": "text", - "placeholders": {} - }, - "people": "Daoine", - "@people": { - "type": "text", - "placeholders": {} - }, - "password": "Pasfhocal", - "@password": { - "type": "text", - "placeholders": {} - }, - "participant": "Rannpháirtí", - "@participant": { - "type": "text", - "placeholders": {} - }, - "directChats": "Comhráite Díreacha", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "deviceId": "ID gléis", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Scrios an teachtaireacht", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Scrios an cuntas", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "createNewSpace": "Spás nua", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "countParticipants": "{count} rannpháirtithe", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "or": "Nó", - "@or": { - "type": "text", - "placeholders": {} - }, - "online": "Ar líne", - "@online": { - "type": "text", - "placeholders": {} - }, - "ok": "togha", - "@ok": { - "type": "text", - "placeholders": {} - }, - "offline": "As líne", - "@offline": { - "type": "text", - "placeholders": {} - }, - "offensive": "Maslach", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "notifications": "Fógraí", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "none": "Aon cheann", - "@none": { - "type": "text", - "placeholders": {} - }, - "no": "Níl", - "@no": { - "type": "text", - "placeholders": {} - }, - "next": "Ar Aghaidh", - "@next": { - "type": "text", - "placeholders": {} - }, - "moderator": "Modhnóir", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "messages": "Teachtaireachtaí", - "@messages": { - "type": "text", - "placeholders": {} - }, - "mention": "Luaigh", - "@mention": { - "type": "text", - "placeholders": {} - }, - "logout": "Logáil amach", - "@logout": { - "type": "text", - "placeholders": {} - }, - "login": "Logáil isteach", - "@login": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Solas", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "license": "Ceadúnas", - "@license": { - "type": "text", - "placeholders": {} - }, - "leave": "Fág", - "@leave": { - "type": "text", - "placeholders": {} - }, - "invited": "Le cuireadh", - "@invited": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Neamhurchóideach", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "ignore": "Tabhair neamhaird ar", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "identity": "Aitheantas", - "@identity": { - "type": "text", - "placeholders": {} - }, - "id": "ID", - "@id": { - "type": "text", - "placeholders": {} - }, - "help": "Cabhair", - "@help": { - "type": "text", - "placeholders": {} - }, - "groups": "Grúpaí", - "@groups": { - "type": "text", - "placeholders": {} - }, - "group": "Grúpa", - "@group": { - "type": "text", - "placeholders": {} - }, - "forward": "Seol ar aghaidh", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "homeserver": "Freastalaí baile", - "@homeserver": {}, - "encryption": "Criptiúchán", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Criptithe", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "edit": "Cuir in eagar", - "@edit": { - "type": "text", - "placeholders": {} - }, - "devices": "Gléasanna", - "@devices": { - "type": "text", - "placeholders": {} - }, - "device": "Gléas", - "@device": { - "type": "text", - "placeholders": {} - }, - "delete": "Scrios", - "@delete": { - "type": "text", - "placeholders": {} - }, - "dateWithYear": "{day}/{month}/{year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "dateWithoutYear": "{day}/{month}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "containsUserName": "Coinníonn sé ainm úsáideora", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Cumraigh comhrá", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "commandInvalid": "Ordú neamhbhailí", - "@commandInvalid": { - "type": "text" - }, - "commandHint_send": "Seol téacs", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_me": "Déan cur síos ort féin", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "clearArchive": "Glan an cartlann", - "@clearArchive": {}, - "chatDetails": "Sonraí comhrá", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chatBackup": "Cúltaca comhrá", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "D'athraigh {username} abhatár an chomhrá", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changeDeviceName": "Athraigh ainm an ghléis", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "Ní féidir an URI {uri} a oscailt", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "cancel": "Cealaigh", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Teachtaireachtaí bota", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "blocked": "Bactha", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "blockDevice": "Bac Gléas", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "Chuir {username} cosc ar {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "banned": "Coiscthe", - "@banned": { - "type": "text", - "placeholders": {} - }, - "banFromChat": "Toirmisc ón gcomhrá", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "sendOnEnter": "Seol ar iontráil", - "@sendOnEnter": {}, - "archive": "Cartlann", - "@archive": { - "type": "text", - "placeholders": {} - }, - "appLock": "Bac aip", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "anyoneCanJoin": "Is féidir le aon duine dul isteach", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "D'fhreagair {senderName} an glao", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "allChats": "Gach comhrá", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "all": "Gach", - "@all": { - "type": "text", - "placeholders": {} - }, - "alias": "ailias", - "@alias": { - "type": "text", - "placeholders": {} - }, - "admin": "Riarthóir", - "@admin": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Cuir go spás", - "@addToSpace": {}, - "addEmail": "Cuir ríomhphoist", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "Thosaigh {username} an criptiú ó dheireadh go deireadh", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Cuntas", - "@account": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "Ghlac {username} leis an cuireadh", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "accept": "Glac", - "@accept": { - "type": "text", - "placeholders": {} - }, - "about": "Faoi", - "@about": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Glac leis an iarratas fíoraithe seo ó {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "areYouSureYouWantToLogout": "An bhfuil tú cinnte gur mhaith leat logáil amach?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "An bhfuil tú cinnte?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "An bhfuil cead ag aoi-úsáideoirí a bheith páirteach", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "Thug {username} cuireadh do {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "hideRedactedEvents": "Folaigh imeachtaí athdhéanta", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Is féidir le haíonna páirt a ghlacadh", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "guestsAreForbidden": "Tá cosc ar aíonna", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Grúpa le {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "groupIsPublic": "Tá an grúpa poiblí", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "Ón gcuireadh", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "enterYourHomeserver": "Cuir isteach do fhreastalaí baile", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Gearrchód emote neamhbhailí!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Tá iomaite ann cheana féin!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Cuir in eagar abhatár an tseomra", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Cuir ailiasanna an tseomra in eagar", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Cuir freastalaí blocáilte in eagar", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Leibhéal ceada réamhshocraithe", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "unblockDevice": "Díbhlocáil Gléas", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Tugadh cuireadh don theagmháil a thar isteach sa grúpa", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Déan comparáid idir na huimhreacha seo a leanas agus déan cinnte go bhfuil na huimhreacha seo a leanas ag teacht le huimhreacha an ghléis eile:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "compareEmojiMatch": "Déan comparáid agus déan cinnte go bhfuil an emoji seo a leanas comhoiriúnach le emoji an ghléis eile:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "commandMissing": "Ní ordú é {command}.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "commandHint_react": "Seol freagra mar fhreagairt", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_op": "Socraigh leibhéal cumhachta an úsáideora áirithe (réamhshocrú: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_myroomnick": "Socraigh d'ainm taispeána don seomra seo", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_myroomavatar": "Cuir do phictiúr don seomra seo (le mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_kick": "Bain an t-úsáideoir áirithe den seomra seo", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_join": "Téigh isteach sa seomra áirithe", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_ban": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_invite": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "chooseAStrongPassword": "Roghnaigh pasfhocal láidir", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "Cuireadh comhrá leis an spás seo", - "@chatHasBeenAddedToThisSpace": {}, - "chatBackupDescription": "Tá do chúltaca comhrá daingnithe le heochair slándála. Déan cinnte nach gcaillfidh tú é.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "Truaillíodh an criptiú", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Athraigh ainm an ghrúpa", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changedTheRoomInvitationLink": "D'athraigh {username} nasc an chuiridh", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "D'athraigh {username} ailiasanna an tseomra", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheProfileAvatar": "D'athraigh {username} a n-abhatár", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "D'athraigh {username} na rialacha ceangail go: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheJoinRules": "D'athraigh {username} na rialacha ceangail", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "D'athraigh {username} infheictheacht na staire go: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibility": "D'athraigh {username} infheictheacht na staire", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "D'athraigh {username} a n-ainm taispeána go: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheChatPermissions": "D'athraigh {username} na ceadanna comhrá", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatNameTo": "D'athraigh {username} an t-ainm comhrá go: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatDescriptionTo": "D'athraigh {username} an cur síos comhrá go: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "autoplayImages": "Seinn greamáin agus straoiseog beoite go huathoibríoch", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "createdTheChat": "Rinne {username} an comhrá", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "copyToClipboard": "Cóipeáil ar an ghearrthaisce", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Cóipeáilte ar an ghearrthaisce", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Coinníonn sé ainm taispeána", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "commandHint_plain": "Seol téacs neamhfhoirmithe", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_leave": "Fág an seomra seo", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_html": "Seol téacs HTML-formáidithe", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "changeYourAvatar": "Athraigh do abhatár", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Athraigh do stíl", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Athraigh an freastalaí baile", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Glórphost", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Físghlao", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Tosaigh Fíorú", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "unmuteChat": "Neamhciúnaigh comhrá", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Folaigh imeachtaí anaithnide", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "unknownDevice": "Gléas anaithnid", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Marcáil Léite/Neamhléite", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Scoránaigh mar ciúnaithe", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "toggleFavorite": "Scoránaigh mar ceann is fearr leat", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Tá siad céanna", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Ainm an spáis", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Cód foinseach", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "showPassword": "Taispeáin pasfhocal", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "shareLocation": "Roinn suíomh", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Cuir stádas", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Seol físeán", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Seol greamán", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Seol an bunchóip", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Seol teachtaireachtaí", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Seol íomhá", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Seol comhad", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Seol fuaim", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Sábháil comhad", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Leagan seomra", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Iarr cead", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Tuairiscigh teachtaireacht", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "removeDevice": "Bain gléas", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "redactMessage": "Bain teachtaireacht amach", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "pushRules": "Rialacha na bhfógraí", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Seomraí Poiblí", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "pleaseChoose": "Roghnaigh le do thoil", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "play": "Seinn {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "passwordRecovery": "Aisfháil pasfhocail", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Pasfhocal dearmadta", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Oscail ceamara", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "obtainingLocation": "ag Aimsiú an suíomh…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Gan cead", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "newChat": "Comhrá nua", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Ciúnaigh comhrá", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Athruithe ball", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Lódáil níos mó…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "joinRoom": "Téigh isteach sa seomra", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "isTyping": "ag clóscríobh…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Tabhair cuireadh do theagmháil", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Úsáideoirí a dtugann tú neamhaird orthu", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "Ó tar isteach", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Méid cló", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Tosaigh criptiú", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Cuir ainm taispeána in eagar", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Gníomhach faoi láthair", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "fileName": "Ainm an chomhaid", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "Gach rud réidh!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Comhrá folamh", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Gearrchód straoiseoige", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Socruithe straoiseoige", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Íoslódáil comhad", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "changePassword": "Athraigh an pasfhocal", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Dorcha", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "create": "Cruthaigh", - "@create": { - "type": "text", - "placeholders": {} - }, - "copy": "Cóipeáil", - "@copy": { - "type": "text", - "placeholders": {} - }, - "connect": "Ceangail", - "@connect": { - "type": "text", - "placeholders": {} - }, - "confirm": "Deimhnigh", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "close": "Dún", - "@close": { - "type": "text", - "placeholders": {} - }, - "chats": "Comhráite", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chat": "Comhrá", - "@chat": { - "type": "text", - "placeholders": {} - }, - "scanQrCode": "Scan cód QR", - "@scanQrCode": {}, - "inviteText": "Thug {username} cuireadh duit chuig FluffyChat.\n1. Suiteáil FluffyChat: https://fluffychat.im\n2. Cláraigh nó sínigh isteach\n3. Oscail an nasc cuiridh: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "noMatrixServer": "Níl {server1} freastalaí Matrix. Úsáid {server2} ina áit sin?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "noGoogleServicesWarning": "Dealraíonn sé nach bhfuil aon seirbhísí google agat ar do ghuthán. Sin cinneadh maith le do phríobháideacht! Chun fógraí brú a fháil i FluffyChat molaimid https://microg.org/ nó https://unifiedpush.org/ a úsáid.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Ní féidir leat criptiú a ghníomhachtú ach a luaithe nach bhfuil an seomra inrochtana go poiblí a thuilleadh.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Níor aimsíodh aon straoiseoga. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Gan aon nasc leis an bhfreastalaí", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Iarratas fíoraithe nua!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "Teachtaireacht nua i FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Bí ar an eolas go dteastaíonn Pantalaimon uait chun criptiú ó cheann go ceann a úsáid anois.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Logáil isteach chuig {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "locationPermissionDeniedNotice": "Diúltaíodh cead suímh. Deonaigh dóibh le do thoil go mbeidh tú in ann do shuíomh a roinnt.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "locationDisabledNotice": "Tá seirbhísí suímh díchumasaithe. Cuir ar a gcumas le do thoil a bheith in ann do shuíomh a roinnt.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "loadingPleaseWait": "Ag lódáil… Fan, le do thoil.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Lódáil {count} níos mó rannpháirtithe", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "leftTheChat": "Fágadh an comhrá", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Gníomhach deireanach: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "kickFromChat": "Caith é amach as an comhrá", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "kicked": "Chaith {username} {targetName} amach", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "Chaith {username} amach agus chuir cosc ar {targetName} freisin", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "joinedTheChat": "Tháinig {username} isteach sa chomhrá", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "invitedUsersOnly": "Úsáideoirí le cuireadh amháin", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Tabhair cuireadh do theagmháil chuig {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "incorrectPassphraseOrKey": "Pasfhrása nó eochair téarnaimh mícheart", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Chliceáil mé ar an nasc", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "Cé chomh maslach atá an t-ábhar seo?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Fíor-maslach", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "Tharraing {username} an cuireadh do {targetName} siar", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "goToTheNewRoom": "Téigh go dtí an seomra nua", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "Earráid maidir le suíomh a fháil: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "enterAnEmailAddress": "Cuir isteach seoladh ríomhphoist", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "Chuir {senderName} deireadh leis an nglao", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "encryptionNotEnabled": "Ní chumasaítear criptiú", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Ní bheidh in ann an criptiú a dhíchumasú níos mó. An bhfuil tú cinnte?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Cumasaigh pacáiste straoiseoige go huilíoch", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Caithfidh tú gearrchód straoiseoige agus íomhá a roghnú!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Pacáistí straoiseoige don seomra", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Athraíodh an t-ainm taispeána", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "deactivateAccountWarning": "Díghníomhachtaeoidh sé seo do chuntas úsáideora. Ní féidir é seo a chealú! An bhfuil tú cinnte?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Níorbh fhéidir teachtaireacht a dhíchriptiú: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "contentHasBeenReported": "Tuairiscíodh an t-ábhar do lucht riaracháin an fhreastalaí", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "commandHint_unban": "Cuir deireadh an cosc den úsáideoir áirithe ón seomra seo", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "changedTheGuestAccessRulesTo": "D'athraigh {username} na rialacha maidir le rochtain aoi chuig: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheGuestAccessRules": "D'athraigh {username} na rialacha rochtana aoi", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerVersionsException": "Tá na leaganacha sonraíochta seo ar fáil faoin freastalaí baile:\n{serverVersions}\nAch níl ach na ceann seo ar fáil faoin aip seo {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerLoginTypesException": "Tá na cineálacha logála isteach seo ar fáil faoin freastalaí baile:\n{serverVersions}\nAch níl ach na ceann seo ar fáil faoin aip seo:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "askSSSSSign": "Chun a bheith in ann an duine eile a shíniú, cuir isteach do phasfhrása stóir sábháilte nó d'eochair téarnaimh.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "D'eochair phoiblí", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Cuireadh cosc ort ón gcomhrá seo", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Níl tú ag glacadh páirte sa chomhrá seo a thuilleadh", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Scríobh teachtaireacht…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Leis na seoltaí seo is féidir leat do phasfhocal a athshlánú.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Glan do cúltaca comhrá a chruthú eochair slándála nua?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "Cén fáth ar mhaith leat é seo a thuairisciú?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Cé a bhfuil cead aige/aici dul isteach sa ghrúpa seo", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Cé atá in ann an gníomh a dhéanamh", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "D'fhíoraigh tú go rathúil!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "D'fhág {username} an comhrá", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userAndUserAreTyping": "Tá {username} agus {username2} ag clóscríobh…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userAndOthersAreTyping": "tá {username} agus {count} daoine eile ag clóscríobh…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "unreadChats": "{unreadCount, plural, =1{1 comhrá neamhléite} other{{unreadCount} comhráite neamhléite}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "unknownEncryptionAlgorithm": "Algartam criptithe anaithnid", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "Chuir {username} deireadh an cosc {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "tryToSendAgain": "Déan iarracht a sheoladh arís", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Aistriú ó ghléas eile", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "An iomarca iarratas. Bain triail eile as níos déanaí!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "theyDontMatch": "Níl siad céanna", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "Roinn {username} an suíomh", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "setPermissionsLevel": "Socraigh leibhéal ceadanna", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Socraigh nasc cuiridh", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "setCustomEmotes": "Socraigh straoiseoga saincheaptha", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "setAsCanonicalAlias": "Socraigh mar phríomh-ailias", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "sentCallInformations": "Sheol {senderName} faisnéis maidir le glaonna", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "sentAVideo": "Sheol {username} físeán", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "Sheol {username} greamán", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "Sheol {username} pictiúr", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "replaceRoomWithNewerVersion": "Cuir leagan seomra níos nuaí in ionad an tseomra", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Taispeáin ábhar teachtaireachta saibhir", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Bain d'abhatár", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Cuir deireadh an cosc ón gcomhrá", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Bainte de ag {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeAllOtherDevices": "Bain gach gléas eile", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "Dhiúltaigh {username} don chuireadh", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "redactedAnEvent": "Rinne {username} cinsire imeacht", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "pleaseFollowInstructionsOnWeb": "Lean na treoracha ar an suíomh gréasáin agus tapáil \"ar aghaidh\".", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Cuir isteach d'ainm úsáideora le do thoil", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Cuir isteach d'uimhir PIN le do thoil", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Iontráil do phasfhocal le do thoil", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Iontráil 4 dhigit le do thoil nó fág folamh chun glas aipe a dhíchumasú.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Cliceáil ar an nasc sa ríomhphost agus ansin lean ar aghaidh.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Roghnaigh paschód le do thoil", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Roghnaigh íomhá", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Athraíodh an pasfhocal", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "pasfhrása nó eochair téarnaimh", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "serverRequiresEmail": "Ní mór don fhreastalaí seo do sheoladh ríomhphoist a bhailíochtú le haghaidh clárúcháin.", - "@serverRequiresEmail": {}, - "openInMaps": "Oscail i léarscáileanna", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Oscail an aip chun teachtaireachtaí a léamh", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Úps, chuaigh rud éigin mícheart …", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Hoips! Ar an drochuair, tharla earráid nuair a bhí na fógraí brú á mbunú.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "Tá Cúltaca Eochair Ar Líne cumasaithe", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "Tá {count} úsáideoirí ag clóscríobh…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "notificationsEnabledForThisAccount": "Fógraí cumasaithe don chuntas seo", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Níor aimsíodh aon seomraí…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Níor chuir tú bealach leis do phasfhocal a aisghabháil fós.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Tabhair cuireadh dom", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Sheolamar ríomhphost chugat", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Ag fanacht le comhpháirtí glacadh leis na huimhreacha …", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Ag fanacht le comhpháirtí glacadh leis na straoiseoga…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Ag fanacht le comhpháirtí glacadh leis an iarratas…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Infheicthe do gach duine", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Infheicthe do na rannpháirtithe go léir", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Infheictheacht stair na comhrá", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Ag fíorú cuntas eile", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "userSentUnknownEvent": "Sheol {username} imeacht {type}", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "userIsTyping": "Tá {username} ag clóscríobh…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "unknownEvent": "Imeacht anaithnid '{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "synchronizingPleaseWait": "Ag sioncrónú... Fan, le do thoil.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "startedACall": "Thosaigh {senderName} glao", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "spaceIsPublic": "Tá an spás poiblí", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Sínigh Aonair ar", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "sentAnAudio": "Sheol {username} fuaim", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAFile": "Sheol {username} comhad", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sendAsText": "Seol mar théacs", - "@sendAsText": { - "type": "text" - }, - "sendAMessage": "Seol teachtaireacht", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Le feiceáil ag {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "roomHasBeenUpgraded": "Uasghrádaíodh an seomra", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "addAccount": "Breisigh cuntas", - "@addAccount": {}, - "enableMultiAccounts": "(BÉITE) Cumasaigh cuntais iomadúla ar an gléas seo", - "@enableMultiAccounts": {}, - "commandHint_create": "Cruthaigh comhrá grúpa folamh\nÚsáid --no-encryption chun criptiúchán a dhíchumasú", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "link": "Nasc", - "@link": {}, - "commandHint_clearcache": "Glan an taisce", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "videoCallsBetaWarning": "Tabhair faoi deara go bhfuil físglaonna i béite. B'fhéidir nach bhfeidhmíonn siad ar gach ardán chomh atá súil aige ná ar bith.", - "@videoCallsBetaWarning": {}, - "emailOrUsername": "Ríomhphost nó ainm úsáideora", - "@emailOrUsername": {}, - "repeatPassword": "Scríobh an pasfhocal arís", - "@repeatPassword": {}, - "yourChatBackupHasBeenSetUp": "Bunaíodh do chúltaca comhrá.", - "@yourChatBackupHasBeenSetUp": {}, - "openVideoCamera": "Oscail físcheamara", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@reportErrorDescription": {}, - "@unsupportedAndroidVersion": {}, - "@widgetJitsi": {}, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@oneClientLoggedOut": {}, - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "@nextAccount": {}, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@youAcceptedTheInvitation": {}, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@widgetUrlError": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@previousAccount": {}, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@widgetNameError": {}, - "@addToBundle": {}, - "@addWidget": {}, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@commandHint_markasgroup": {}, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@saveKeyManuallyDescription": {}, - "@editBundlesForAccount": {}, - "@whyIsThisMessageEncrypted": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@dehydrateWarning": {}, - "@noOtherDevicesFound": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@optionalRedactReason": {}, - "@dehydrate": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@reportUser": {}, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@recoveryKey": {}, - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "@invalidInput": {}, - "@dehydrateTorLong": {}, - "@doNotShowAgain": {}, - "@report": {}, - "@unverified": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@removeFromBundle": {}, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@newGroup": {}, - "@bundleName": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@markAsRead": {}, - "@widgetName": {}, - "@errorAddingWidget": {}, - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "@commandHint_hug": {}, - "@replace": {}, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@newSpace": {}, - "@emojis": {}, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@hydrateTorLong": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@pinMessage": {}, - "@invite": {}, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@placeCall": {} -} \ No newline at end of file + "you": "Tú", + "@you": { + "type": "text", + "placeholders": {} + }, + "yes": "Tá", + "@yes": { + "type": "text", + "placeholders": {} + }, + "warning": "Rabhadh!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Cúlbhrat", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "verify": "Deimhnigh", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verified": "Deimhnithe", + "@verified": { + "type": "text", + "placeholders": {} + }, + "username": "Ainm úsáideora", + "@username": { + "type": "text", + "placeholders": {} + }, + "unpin": "Bain biorán", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Níl ar fáil", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "systemTheme": "Córas", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "submit": "Cuir isteach", + "@submit": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Conas atá tú inniu?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "status": "Staid", + "@status": { + "type": "text", + "placeholders": {} + }, + "skip": "Léim", + "@skip": { + "type": "text", + "placeholders": {} + }, + "share": "Roinn", + "@share": { + "type": "text", + "placeholders": {} + }, + "settings": "Socruithe", + "@settings": { + "type": "text", + "placeholders": {} + }, + "send": "Seol", + "@send": { + "type": "text", + "placeholders": {} + }, + "security": "Slándáil", + "@security": { + "type": "text", + "placeholders": {} + }, + "search": "Cuardaigh", + "@search": { + "type": "text", + "placeholders": {} + }, + "reply": "Freagair", + "@reply": { + "type": "text", + "placeholders": {} + }, + "remove": "Bain", + "@remove": { + "type": "text", + "placeholders": {} + }, + "rejoin": "Téigh ar ais isteach", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "reject": "Diúltaigh", + "@reject": { + "type": "text", + "placeholders": {} + }, + "register": "Cláraigh", + "@register": { + "type": "text", + "placeholders": {} + }, + "recording": "Ag Taifeadadh", + "@recording": { + "type": "text", + "placeholders": {} + }, + "reason": "Fáth", + "@reason": { + "type": "text", + "placeholders": {} + }, + "privacy": "Príobháideacht", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "pin": "Biorán", + "@pin": { + "type": "text", + "placeholders": {} + }, + "people": "Daoine", + "@people": { + "type": "text", + "placeholders": {} + }, + "password": "Pasfhocal", + "@password": { + "type": "text", + "placeholders": {} + }, + "participant": "Rannpháirtí", + "@participant": { + "type": "text", + "placeholders": {} + }, + "directChats": "Comhráite Díreacha", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "deviceId": "ID gléis", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Scrios an teachtaireacht", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Scrios an cuntas", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "createNewSpace": "Spás nua", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} rannpháirtithe", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "or": "Nó", + "@or": { + "type": "text", + "placeholders": {} + }, + "online": "Ar líne", + "@online": { + "type": "text", + "placeholders": {} + }, + "ok": "togha", + "@ok": { + "type": "text", + "placeholders": {} + }, + "offline": "As líne", + "@offline": { + "type": "text", + "placeholders": {} + }, + "offensive": "Maslach", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "notifications": "Fógraí", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "none": "Aon cheann", + "@none": { + "type": "text", + "placeholders": {} + }, + "no": "Níl", + "@no": { + "type": "text", + "placeholders": {} + }, + "next": "Ar Aghaidh", + "@next": { + "type": "text", + "placeholders": {} + }, + "moderator": "Modhnóir", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "messages": "Teachtaireachtaí", + "@messages": { + "type": "text", + "placeholders": {} + }, + "mention": "Luaigh", + "@mention": { + "type": "text", + "placeholders": {} + }, + "logout": "Logáil amach", + "@logout": { + "type": "text", + "placeholders": {} + }, + "login": "Logáil isteach", + "@login": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Solas", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "license": "Ceadúnas", + "@license": { + "type": "text", + "placeholders": {} + }, + "leave": "Fág", + "@leave": { + "type": "text", + "placeholders": {} + }, + "invited": "Le cuireadh", + "@invited": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Neamhurchóideach", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "ignore": "Tabhair neamhaird ar", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "identity": "Aitheantas", + "@identity": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "help": "Cabhair", + "@help": { + "type": "text", + "placeholders": {} + }, + "groups": "Grúpaí", + "@groups": { + "type": "text", + "placeholders": {} + }, + "group": "Grúpa", + "@group": { + "type": "text", + "placeholders": {} + }, + "forward": "Seol ar aghaidh", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "homeserver": "Freastalaí baile", + "@homeserver": {}, + "encryption": "Criptiúchán", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Criptithe", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "edit": "Cuir in eagar", + "@edit": { + "type": "text", + "placeholders": {} + }, + "devices": "Gléasanna", + "@devices": { + "type": "text", + "placeholders": {} + }, + "device": "Gléas", + "@device": { + "type": "text", + "placeholders": {} + }, + "delete": "Scrios", + "@delete": { + "type": "text", + "placeholders": {} + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "containsUserName": "Coinníonn sé ainm úsáideora", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Cumraigh comhrá", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "commandInvalid": "Ordú neamhbhailí", + "@commandInvalid": { + "type": "text" + }, + "commandHint_send": "Seol téacs", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_me": "Déan cur síos ort féin", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "clearArchive": "Glan an cartlann", + "@clearArchive": {}, + "chatDetails": "Sonraí comhrá", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chatBackup": "Cúltaca comhrá", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "D'athraigh {username} abhatár an chomhrá", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changeDeviceName": "Athraigh ainm an ghléis", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "Ní féidir an URI {uri} a oscailt", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "cancel": "Cealaigh", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Teachtaireachtaí bota", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "blocked": "Bactha", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "blockDevice": "Bac Gléas", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "Chuir {username} cosc ar {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "banned": "Coiscthe", + "@banned": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Toirmisc ón gcomhrá", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "sendOnEnter": "Seol ar iontráil", + "@sendOnEnter": {}, + "archive": "Cartlann", + "@archive": { + "type": "text", + "placeholders": {} + }, + "appLock": "Bac aip", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "anyoneCanJoin": "Is féidir le aon duine dul isteach", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "D'fhreagair {senderName} an glao", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "allChats": "Gach comhrá", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "all": "Gach", + "@all": { + "type": "text", + "placeholders": {} + }, + "alias": "ailias", + "@alias": { + "type": "text", + "placeholders": {} + }, + "admin": "Riarthóir", + "@admin": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Cuir go spás", + "@addToSpace": {}, + "addEmail": "Cuir ríomhphoist", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "Thosaigh {username} an criptiú ó dheireadh go deireadh", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Cuntas", + "@account": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "Ghlac {username} leis an cuireadh", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "accept": "Glac", + "@accept": { + "type": "text", + "placeholders": {} + }, + "about": "Faoi", + "@about": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Glac leis an iarratas fíoraithe seo ó {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "areYouSureYouWantToLogout": "An bhfuil tú cinnte gur mhaith leat logáil amach?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "An bhfuil tú cinnte?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "An bhfuil cead ag aoi-úsáideoirí a bheith páirteach", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "Thug {username} cuireadh do {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "hideRedactedEvents": "Folaigh imeachtaí athdhéanta", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Is féidir le haíonna páirt a ghlacadh", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "guestsAreForbidden": "Tá cosc ar aíonna", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Grúpa le {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "groupIsPublic": "Tá an grúpa poiblí", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "Ón gcuireadh", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Cuir isteach do fhreastalaí baile", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Gearrchód emote neamhbhailí!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Tá iomaite ann cheana féin!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Cuir in eagar abhatár an tseomra", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Cuir ailiasanna an tseomra in eagar", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Cuir freastalaí blocáilte in eagar", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Leibhéal ceada réamhshocraithe", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "unblockDevice": "Díbhlocáil Gléas", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Tugadh cuireadh don theagmháil a thar isteach sa grúpa", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Déan comparáid idir na huimhreacha seo a leanas agus déan cinnte go bhfuil na huimhreacha seo a leanas ag teacht le huimhreacha an ghléis eile:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Déan comparáid agus déan cinnte go bhfuil an emoji seo a leanas comhoiriúnach le emoji an ghléis eile:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "commandMissing": "Ní ordú é {command}.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "commandHint_react": "Seol freagra mar fhreagairt", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_op": "Socraigh leibhéal cumhachta an úsáideora áirithe (réamhshocrú: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "Socraigh d'ainm taispeána don seomra seo", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_myroomavatar": "Cuir do phictiúr don seomra seo (le mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_kick": "Bain an t-úsáideoir áirithe den seomra seo", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "Téigh isteach sa seomra áirithe", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_ban": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_invite": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "chooseAStrongPassword": "Roghnaigh pasfhocal láidir", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Cuireadh comhrá leis an spás seo", + "@chatHasBeenAddedToThisSpace": {}, + "chatBackupDescription": "Tá do chúltaca comhrá daingnithe le heochair slándála. Déan cinnte nach gcaillfidh tú é.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Truaillíodh an criptiú", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Athraigh ainm an ghrúpa", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changedTheRoomInvitationLink": "D'athraigh {username} nasc an chuiridh", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "D'athraigh {username} ailiasanna an tseomra", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheProfileAvatar": "D'athraigh {username} a n-abhatár", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "D'athraigh {username} na rialacha ceangail go: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheJoinRules": "D'athraigh {username} na rialacha ceangail", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "D'athraigh {username} infheictheacht na staire go: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "D'athraigh {username} infheictheacht na staire", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "D'athraigh {username} a n-ainm taispeána go: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheChatPermissions": "D'athraigh {username} na ceadanna comhrá", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatNameTo": "D'athraigh {username} an t-ainm comhrá go: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatDescriptionTo": "D'athraigh {username} an cur síos comhrá go: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "autoplayImages": "Seinn greamáin agus straoiseog beoite go huathoibríoch", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "createdTheChat": "Rinne {username} an comhrá", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "copyToClipboard": "Cóipeáil ar an ghearrthaisce", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Cóipeáilte ar an ghearrthaisce", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Coinníonn sé ainm taispeána", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "commandHint_plain": "Seol téacs neamhfhoirmithe", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_leave": "Fág an seomra seo", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_html": "Seol téacs HTML-formáidithe", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "changeYourAvatar": "Athraigh do abhatár", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Athraigh do stíl", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Athraigh an freastalaí baile", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Glórphost", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Físghlao", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Tosaigh Fíorú", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Neamhciúnaigh comhrá", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Folaigh imeachtaí anaithnide", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Gléas anaithnid", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Marcáil Léite/Neamhléite", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Scoránaigh mar ciúnaithe", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "toggleFavorite": "Scoránaigh mar ceann is fearr leat", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Tá siad céanna", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Ainm an spáis", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Cód foinseach", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "showPassword": "Taispeáin pasfhocal", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "shareLocation": "Roinn suíomh", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Cuir stádas", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Seol físeán", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Seol greamán", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Seol an bunchóip", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Seol teachtaireachtaí", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Seol íomhá", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Seol comhad", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Seol fuaim", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Sábháil comhad", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Leagan seomra", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Iarr cead", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Tuairiscigh teachtaireacht", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "removeDevice": "Bain gléas", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "redactMessage": "Bain teachtaireacht amach", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "pushRules": "Rialacha na bhfógraí", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Seomraí Poiblí", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "pleaseChoose": "Roghnaigh le do thoil", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "play": "Seinn {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "passwordRecovery": "Aisfháil pasfhocail", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Pasfhocal dearmadta", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Oscail ceamara", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "obtainingLocation": "ag Aimsiú an suíomh…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Gan cead", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "newChat": "Comhrá nua", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Ciúnaigh comhrá", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Athruithe ball", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Lódáil níos mó…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "joinRoom": "Téigh isteach sa seomra", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "isTyping": "ag clóscríobh…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Tabhair cuireadh do theagmháil", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Úsáideoirí a dtugann tú neamhaird orthu", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "Ó tar isteach", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Méid cló", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Tosaigh criptiú", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Cuir ainm taispeána in eagar", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Gníomhach faoi láthair", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "fileName": "Ainm an chomhaid", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "Gach rud réidh!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Comhrá folamh", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Gearrchód straoiseoige", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Socruithe straoiseoige", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Íoslódáil comhad", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "changePassword": "Athraigh an pasfhocal", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Dorcha", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "create": "Cruthaigh", + "@create": { + "type": "text", + "placeholders": {} + }, + "copy": "Cóipeáil", + "@copy": { + "type": "text", + "placeholders": {} + }, + "connect": "Ceangail", + "@connect": { + "type": "text", + "placeholders": {} + }, + "confirm": "Deimhnigh", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "close": "Dún", + "@close": { + "type": "text", + "placeholders": {} + }, + "chats": "Comhráite", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chat": "Comhrá", + "@chat": { + "type": "text", + "placeholders": {} + }, + "scanQrCode": "Scan cód QR", + "@scanQrCode": {}, + "inviteText": "Thug {username} cuireadh duit chuig FluffyChat.\n1. Suiteáil FluffyChat: https://fluffychat.im\n2. Cláraigh nó sínigh isteach\n3. Oscail an nasc cuiridh: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "noMatrixServer": "Níl {server1} freastalaí Matrix. Úsáid {server2} ina áit sin?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "noGoogleServicesWarning": "Dealraíonn sé nach bhfuil aon seirbhísí google agat ar do ghuthán. Sin cinneadh maith le do phríobháideacht! Chun fógraí brú a fháil i FluffyChat molaimid https://microg.org/ nó https://unifiedpush.org/ a úsáid.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Ní féidir leat criptiú a ghníomhachtú ach a luaithe nach bhfuil an seomra inrochtana go poiblí a thuilleadh.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Níor aimsíodh aon straoiseoga. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Gan aon nasc leis an bhfreastalaí", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Iarratas fíoraithe nua!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Teachtaireacht nua i FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Bí ar an eolas go dteastaíonn Pantalaimon uait chun criptiú ó cheann go ceann a úsáid anois.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Logáil isteach chuig {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "locationPermissionDeniedNotice": "Diúltaíodh cead suímh. Deonaigh dóibh le do thoil go mbeidh tú in ann do shuíomh a roinnt.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "locationDisabledNotice": "Tá seirbhísí suímh díchumasaithe. Cuir ar a gcumas le do thoil a bheith in ann do shuíomh a roinnt.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "loadingPleaseWait": "Ag lódáil… Fan, le do thoil.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Lódáil {count} níos mó rannpháirtithe", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "leftTheChat": "Fágadh an comhrá", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Gníomhach deireanach: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "kickFromChat": "Caith é amach as an comhrá", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "kicked": "Chaith {username} {targetName} amach", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "Chaith {username} amach agus chuir cosc ar {targetName} freisin", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "joinedTheChat": "Tháinig {username} isteach sa chomhrá", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "invitedUsersOnly": "Úsáideoirí le cuireadh amháin", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Tabhair cuireadh do theagmháil chuig {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "incorrectPassphraseOrKey": "Pasfhrása nó eochair téarnaimh mícheart", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Chliceáil mé ar an nasc", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Cé chomh maslach atá an t-ábhar seo?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Fíor-maslach", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "Tharraing {username} an cuireadh do {targetName} siar", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "goToTheNewRoom": "Téigh go dtí an seomra nua", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "Earráid maidir le suíomh a fháil: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "enterAnEmailAddress": "Cuir isteach seoladh ríomhphoist", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "Chuir {senderName} deireadh leis an nglao", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "encryptionNotEnabled": "Ní chumasaítear criptiú", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Ní bheidh in ann an criptiú a dhíchumasú níos mó. An bhfuil tú cinnte?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Cumasaigh pacáiste straoiseoige go huilíoch", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Caithfidh tú gearrchód straoiseoige agus íomhá a roghnú!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Pacáistí straoiseoige don seomra", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Athraíodh an t-ainm taispeána", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Díghníomhachtaeoidh sé seo do chuntas úsáideora. Ní féidir é seo a chealú! An bhfuil tú cinnte?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Níorbh fhéidir teachtaireacht a dhíchriptiú: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "contentHasBeenReported": "Tuairiscíodh an t-ábhar do lucht riaracháin an fhreastalaí", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "commandHint_unban": "Cuir deireadh an cosc den úsáideoir áirithe ón seomra seo", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "changedTheGuestAccessRulesTo": "D'athraigh {username} na rialacha maidir le rochtain aoi chuig: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheGuestAccessRules": "D'athraigh {username} na rialacha rochtana aoi", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerVersionsException": "Tá na leaganacha sonraíochta seo ar fáil faoin freastalaí baile:\n{serverVersions}\nAch níl ach na ceann seo ar fáil faoin aip seo {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerLoginTypesException": "Tá na cineálacha logála isteach seo ar fáil faoin freastalaí baile:\n{serverVersions}\nAch níl ach na ceann seo ar fáil faoin aip seo:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "askSSSSSign": "Chun a bheith in ann an duine eile a shíniú, cuir isteach do phasfhrása stóir sábháilte nó d'eochair téarnaimh.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "D'eochair phoiblí", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Cuireadh cosc ort ón gcomhrá seo", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Níl tú ag glacadh páirte sa chomhrá seo a thuilleadh", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Scríobh teachtaireacht…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Leis na seoltaí seo is féidir leat do phasfhocal a athshlánú.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Glan do cúltaca comhrá a chruthú eochair slándála nua?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Cén fáth ar mhaith leat é seo a thuairisciú?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Cé a bhfuil cead aige/aici dul isteach sa ghrúpa seo", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Cé atá in ann an gníomh a dhéanamh", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "D'fhíoraigh tú go rathúil!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "userLeftTheChat": "D'fhág {username} an comhrá", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userAndUserAreTyping": "Tá {username} agus {username2} ag clóscríobh…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userAndOthersAreTyping": "tá {username} agus {count} daoine eile ag clóscríobh…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "unreadChats": "{unreadCount, plural, =1{1 comhrá neamhléite} other{{unreadCount} comhráite neamhléite}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unknownEncryptionAlgorithm": "Algartam criptithe anaithnid", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "Chuir {username} deireadh an cosc {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "tryToSendAgain": "Déan iarracht a sheoladh arís", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Aistriú ó ghléas eile", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "An iomarca iarratas. Bain triail eile as níos déanaí!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Níl siad céanna", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "Roinn {username} an suíomh", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "setPermissionsLevel": "Socraigh leibhéal ceadanna", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Socraigh nasc cuiridh", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setCustomEmotes": "Socraigh straoiseoga saincheaptha", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "setAsCanonicalAlias": "Socraigh mar phríomh-ailias", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "sentCallInformations": "Sheol {senderName} faisnéis maidir le glaonna", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentAVideo": "Sheol {username} físeán", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "Sheol {username} greamán", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "Sheol {username} pictiúr", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "replaceRoomWithNewerVersion": "Cuir leagan seomra níos nuaí in ionad an tseomra", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Taispeáin ábhar teachtaireachta saibhir", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Bain d'abhatár", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Cuir deireadh an cosc ón gcomhrá", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Bainte de ag {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeAllOtherDevices": "Bain gach gléas eile", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "Dhiúltaigh {username} don chuireadh", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "redactedAnEvent": "Rinne {username} cinsire imeacht", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "pleaseFollowInstructionsOnWeb": "Lean na treoracha ar an suíomh gréasáin agus tapáil \"ar aghaidh\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Cuir isteach d'ainm úsáideora le do thoil", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Cuir isteach d'uimhir PIN le do thoil", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Iontráil do phasfhocal le do thoil", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Iontráil 4 dhigit le do thoil nó fág folamh chun glas aipe a dhíchumasú.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Cliceáil ar an nasc sa ríomhphost agus ansin lean ar aghaidh.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Roghnaigh paschód le do thoil", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Roghnaigh íomhá", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Athraíodh an pasfhocal", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "pasfhrása nó eochair téarnaimh", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "serverRequiresEmail": "Ní mór don fhreastalaí seo do sheoladh ríomhphoist a bhailíochtú le haghaidh clárúcháin.", + "@serverRequiresEmail": {}, + "openInMaps": "Oscail i léarscáileanna", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Oscail an aip chun teachtaireachtaí a léamh", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Úps, chuaigh rud éigin mícheart …", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Hoips! Ar an drochuair, tharla earráid nuair a bhí na fógraí brú á mbunú.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Tá Cúltaca Eochair Ar Líne cumasaithe", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "Tá {count} úsáideoirí ag clóscríobh…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "notificationsEnabledForThisAccount": "Fógraí cumasaithe don chuntas seo", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Níor aimsíodh aon seomraí…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Níor chuir tú bealach leis do phasfhocal a aisghabháil fós.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Tabhair cuireadh dom", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Sheolamar ríomhphost chugat", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Ag fanacht le comhpháirtí glacadh leis na huimhreacha …", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Ag fanacht le comhpháirtí glacadh leis na straoiseoga…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Ag fanacht le comhpháirtí glacadh leis an iarratas…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Infheicthe do gach duine", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Infheicthe do na rannpháirtithe go léir", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Infheictheacht stair na comhrá", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Ag fíorú cuntas eile", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "Sheol {username} imeacht {type}", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "userIsTyping": "Tá {username} ag clóscríobh…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "unknownEvent": "Imeacht anaithnid '{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "synchronizingPleaseWait": "Ag sioncrónú... Fan, le do thoil.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "startedACall": "Thosaigh {senderName} glao", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "spaceIsPublic": "Tá an spás poiblí", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Sínigh Aonair ar", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "sentAnAudio": "Sheol {username} fuaim", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAFile": "Sheol {username} comhad", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sendAsText": "Seol mar théacs", + "@sendAsText": { + "type": "text" + }, + "sendAMessage": "Seol teachtaireacht", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Le feiceáil ag {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "roomHasBeenUpgraded": "Uasghrádaíodh an seomra", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "addAccount": "Breisigh cuntas", + "@addAccount": {}, + "enableMultiAccounts": "(BÉITE) Cumasaigh cuntais iomadúla ar an gléas seo", + "@enableMultiAccounts": {}, + "commandHint_create": "Cruthaigh comhrá grúpa folamh\nÚsáid --no-encryption chun criptiúchán a dhíchumasú", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "link": "Nasc", + "@link": {}, + "commandHint_clearcache": "Glan an taisce", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "videoCallsBetaWarning": "Tabhair faoi deara go bhfuil físglaonna i béite. B'fhéidir nach bhfeidhmíonn siad ar gach ardán chomh atá súil aige ná ar bith.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "Ríomhphost nó ainm úsáideora", + "@emailOrUsername": {}, + "repeatPassword": "Scríobh an pasfhocal arís", + "@repeatPassword": {}, + "yourChatBackupHasBeenSetUp": "Bunaíodh do chúltaca comhrá.", + "@yourChatBackupHasBeenSetUp": {}, + "openVideoCamera": "Oscail físcheamara", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + } +} From 7bb7ad22d60977c4b68659443ca968a3b1b48e4f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:41 +0000 Subject: [PATCH 071/106] Translated using Weblate (Finnish) Currently translated at 80.5% (525 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/fi/ --- assets/l10n/intl_fi.arb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/assets/l10n/intl_fi.arb b/assets/l10n/intl_fi.arb index 65465acfd..b9123ff0f 100644 --- a/assets/l10n/intl_fi.arb +++ b/assets/l10n/intl_fi.arb @@ -2402,12 +2402,5 @@ "importNow": "Tuo nyt", "@importNow": {}, "invite": "Kutsu", - "@invite": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@unbanUserDescription": {}, - "@pushNotificationsNotAvailable": {}, - "@makeAdminDescription": {}, - "@learnMore": {}, - "@kickUserDescription": {} + "@invite": {} } From 77eaee890caec61a0b708dd251437fb6c10b1872 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:48 +0000 Subject: [PATCH 072/106] Translated using Weblate (Portuguese (Portugal)) Currently translated at 42.1% (275 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/pt_PT/ --- assets/l10n/intl_pt_PT.arb | 3749 +++++++++++++++--------------------- 1 file changed, 1568 insertions(+), 2181 deletions(-) diff --git a/assets/l10n/intl_pt_PT.arb b/assets/l10n/intl_pt_PT.arb index 9db37c78e..1cdce9ee1 100644 --- a/assets/l10n/intl_pt_PT.arb +++ b/assets/l10n/intl_pt_PT.arb @@ -1,2182 +1,1569 @@ { - "repeatPassword": "Repete a palavra-passe", - "@repeatPassword": {}, - "about": "Acerca de", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Aceitar", - "@accept": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} aceitou o convite", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "account": "Conta", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "{username} ativou encriptação ponta-a-ponta", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Adicionar correio eletrónico", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Adicionar ao espaço", - "@addToSpace": {}, - "admin": "Admin", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "alcunha", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "Todos(as)", - "@all": { - "type": "text", - "placeholders": {} - }, - "allChats": "Todas as conversas", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "{senderName} atendeu a chamada", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Qualquer pessoa pode entrar", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "archive": "Arquivo", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Todos os visitantes podem entrar", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Tens a certeza?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "Tens a certeza que queres sair?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Para poderes assinar a outra pessoa, por favor, insere a tua senha de armazenamento seguro ou a chave de recuperação.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Aceitar este pedido de verificação de {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "autoplayImages": "Automaticamente reproduzir autocolantes e emotes animados", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "sendOnEnter": "Enviar com Enter", - "@sendOnEnter": {}, - "badServerVersionsException": "O servidor suporta as versões Spec:\n{serverVersions}\nMas esta aplicação apenas suporta {suportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerLoginTypesException": "O servidor suporta os tipos de início de sessão:\n{serverVersions}\nMas esta aplicação apenas suporta:\n{suportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "banFromChat": "Banir da conversa", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Banido(a)", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} baniu {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Bloquear dispositivo", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Bloqueado", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Mensagens de robôs", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "Cancelar", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "Não é possível abrir o URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changeDeviceName": "Alterar nome do dispositivo", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheChatPermissions": "{username} alterou as permissões da conversa", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} alterou o seu nome para: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} alterou as regras de acesso de visitantes para: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} alterou as regras de entrada", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} alterou as regras de entrada para: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} alterou o seu avatar", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} alterou as alcunhas da sala", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} alterou a ligação de convite", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Alterar palavra-passe", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Alterar o servidor", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Alterar o teu estilo", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Alterar o nome do grupo", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Alterar o teu avatar", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "A encriptação foi corrompida", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chat": "Conversa", - "@chat": { - "type": "text", - "placeholders": {} - }, - "yourChatBackupHasBeenSetUp": "A cópia de segurança foi configurada.", - "@yourChatBackupHasBeenSetUp": {}, - "chatBackup": "Cópia de segurança de conversas", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "A tuas mensagens antigas estão protegidas com uma chave de recuperação. Por favor, certifica-te que não a perdes.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Detalhes de conversa", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "A conversa foi adicionada a este espaço", - "@chatHasBeenAddedToThisSpace": {}, - "chats": "Conversas", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Escolhe uma palavra-passe forte", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Limpar arquivo", - "@clearArchive": {}, - "close": "Fechar", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Banir o utilizador dado desta sala", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_html": "Enviar texto formatado com HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Convidar o utilizador dado a esta sala", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Entrar na sala dada", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Remover o utilizador dado desta sala", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_leave": "Sair desta sala", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_me": "Descreve-te", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_myroomavatar": "Definir a tua imagem para esta sala (por mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_myroomnick": "Definir o teu nome para esta sala", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_op": "Definir o nível de poder do utilizador dado (por omissão: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_plain": "Enviar texto não formatado", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_react": "Enviar respostas como reações", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_send": "Enviar texto", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_unban": "Perdoar o utilizador dado", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandInvalid": "Comando inválido", - "@commandInvalid": { - "type": "text" - }, - "commandMissing": "{command} não é um comando.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "compareEmojiMatch": "Compara e certifica-te que os emojis que se seguem correspondem aos do outro dispositivo:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Compara e certifica-te que os números que se seguem correspondem aos do outro dispositivo:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Configurar conversa", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "Confirmar", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "connect": "Ligar", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "O contacto foi convidado para o grupo", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Contém nome de exibição", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Contém nome de utilizador", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "O conteúdo foi denunciado aos admins do servidor", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Copiado para a área de transferência", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Copiar", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Copiar para a área de transferência", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Não foi possível desencriptar mensagem: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} participantes", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Criar", - "@create": { - "type": "text", - "placeholders": {} - }, - "createdTheChat": "{username} criou a conversa", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "createNewSpace": "Novo espaço", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Ativo(a) agora", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Escuro", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "dateAndTimeOfDay": "{date} às {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{day}-{month}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{day}-{month}-{year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "deactivateAccountWarning": "Isto irá desativar a tua conta. Não é reversível! Tens a certeza?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Nível de permissão normal", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "delete": "Eliminar", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Eliminar conta", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Eliminar mensagem", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Dispositivo", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "ID de dispositivo", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Dispositivos", - "@devices": { - "type": "text", - "placeholders": {} - }, - "directChats": "Conversas diretas", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "displaynameHasBeenChanged": "Nome de exibição alterado", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Descarregar ficheiro", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "edit": "Editar", - "@edit": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Editar servidores bloqueados", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Editar nome de exibição", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Editar alcunhas da sala", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Editar avatar da sala", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Emote já existente!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Código de emote inválido!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Pacotes de emotes da sala", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Configurações de emotes", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Código do emote", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Precisas de escolher um código de emote e uma imagem!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emptyChat": "Conversa vazia", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Ativar pacote de emotes globalmente", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Ativar encriptação", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Nunca mais poderás desativar a encriptação. Tens a certeza?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Encriptada", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryption": "Encriptação", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "A encriptação não está ativada", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} terminou a chamada", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "enterAnEmailAddress": "Insere um endereço de correio eletrónico", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "homeserver": "Servidor", - "@homeserver": {}, - "enterYourHomeserver": "Insere o teu servidor", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "errorObtainingLocation": "Erro ao obter localização: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "everythingReady": "Tudo a postos!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Extremamente ofensivo", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "fileName": "Nome do ficheiro", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Tamanho da letra", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "forward": "Reencaminhar", - "@forward": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Ir para a nova sala", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Grupo", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "O grupo é público", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "Grupos", - "@groups": { - "type": "text", - "placeholders": {} - }, - "groupWith": "Grupo com {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "guestsAreForbidden": "São proibidos visitantes", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Podem entrar visitantes", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "hasWithdrawnTheInvitationFor": "{username} revogou o convite para {targetName}", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "help": "Ajuda", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Esconder eventos eliminados", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Esconder eventos desconhecidos", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "Quão ofensivo é este conteúdo?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "ID", - "@id": { - "type": "text", - "placeholders": {} - }, - "identity": "Identidade", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Ignorar", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Utilizadores ignorados", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Eu cliquei na ligação", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Senha ou chave de recuperação incorretos", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Inofensivo", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Convidar contacto", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Convidar contacto para {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invited": "Convidado(a)", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUser": "{username} convidou {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "invitedUsersOnly": "Utilizadores(as) convidados(as) apenas", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "inviteForMe": "Convite para mim", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteText": "{username} convidou-te para o FluffyChat.\n1. Instala o FluffyChat: https://fluffychat.im\n2. Regista-te ou inicia sessão.\n3. Abre a ligação de convite: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "isTyping": "está a escrever…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "{username} entrou na conversa", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "joinRoom": "Entrar na sala", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kicked": "{username} expulsou {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "{username} expulsou e baniu {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickFromChat": "Expulsar da conversa", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "lastActiveAgo": "Ativo(a) pela última vez: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "leave": "Sair", - "@leave": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "Saiu da conversa", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Licença", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Claro", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadCountMoreParticipants": "Carregar mais {count} participantes", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "loadingPleaseWait": "A carregar... Por favor aguarde.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Carregar mais…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "locationDisabledNotice": "Os serviços de localização estão desativados. Por favor, ativa-os para poder partilhar a sua localização.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "Permissão de localização recusada. Por favor, concede permissão para poderes partilhar a tua posição.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "login": "Entrar", - "@login": { - "type": "text", - "placeholders": {} - }, - "logInTo": "Entrar em {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "logout": "Sair", - "@logout": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Alterações de membros", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "Mencionar", - "@mention": { - "type": "text", - "placeholders": {} - }, - "messages": "Mensagens", - "@messages": { - "type": "text", - "placeholders": {} - }, - "moderator": "Moderador", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Silenciar conversa", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Por favor,", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "newChat": "Nova conversa", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "Nova mensagem no FluffyChat", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Novo pedido de verificação!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Próximo", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "Não", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Nenhuma ligação ao servidor", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Nenhuns emotes encontrados. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Só podes ativar a encriptação quando a sala não for publicamente acessível.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Parece que não tens nenhuns serviços da Google no seu telemóvel. É uma boa decisão para a sua privacidade! Para receber notificações instantâneas no FluffyChat, recomendamos que uses https://microg.org/ ou https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} não é um servidor Matrix, usar {server2}?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "none": "Nenhum", - "@none": { - "type": "text", - "placeholders": {} - }, - "changedTheChatAvatar": "{username} alterou o avatar da conversa", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} alterou a visibilidade do histórico para: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheChatDescriptionTo": "{username} alterou a descrição da conversa para: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} alterou o nome da conversa para: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheGuestAccessRules": "{username} alterou as regras de acesso de visitantes", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibility": "{username} alterou a visibilidade do histórico", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sendAMessage": "Enviar a mensagem", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "sendAudio": "Enviar áudio", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendAsText": "Enviar como texto", - "@sendAsText": { - "type": "text" - }, - "send": "Enviar", - "@send": { - "type": "text", - "placeholders": {} - }, - "appLock": "Bloqueio da aplicação", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Ainda não adicionaste uma forma de recuperar a tua palavra-passe.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Sem permissão", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Não foram encontradas nenhumas salas…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "Notificações", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Notificações ativadas para esta conta", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "numUsersTyping": "Estão {count} utilizadores(as) a escrever…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "obtainingLocation": "A obter localização…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "offensive": "Offensivo", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "Offline", - "@offline": { - "type": "text", - "placeholders": {} - }, - "ok": "ok", - "@ok": { - "type": "text", - "placeholders": {} - }, - "online": "Online", - "@online": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "A cópia de segurança online de chaves está ativada", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Ups! Infelizmente, ocorreu um erro ao configurar as notificações instantâneas.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Ups, algo correu mal…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Abrir aplicação para ler mensagens", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Abrir câmara", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "oneClientLoggedOut": "Um dos teus clientes terminou sessão", - "@oneClientLoggedOut": {}, - "addAccount": "Adicionar conta", - "@addAccount": {}, - "editBundlesForAccount": "Editar pacotes para esta conta", - "@editBundlesForAccount": {}, - "addToBundle": "Adicionar ao pacote", - "@addToBundle": {}, - "removeFromBundle": "Remover deste pacote", - "@removeFromBundle": {}, - "bundleName": "Nome do pacote", - "@bundleName": {}, - "enableMultiAccounts": "(BETA) Ativar múltiplas contas neste dispositivo", - "@enableMultiAccounts": {}, - "openInMaps": "Abrir nos mapas", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "link": "Ligação", - "@link": {}, - "serverRequiresEmail": "Este servidor precisa de validar o teu endereço de correio eletrónico para o registo.", - "@serverRequiresEmail": {}, - "or": "Ou", - "@or": { - "type": "text", - "placeholders": {} - }, - "participant": "Participante", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "senha ou chave de recuperação", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "password": "Palavra-passe", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Palavra-passe esquecida", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "A palavra-passe foi alterada", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Recuperação de palavra-passe", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "people": "Pessoas", - "@people": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Escolher uma imagem", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Afixar", - "@pin": { - "type": "text", - "placeholders": {} - }, - "play": "Reproduzir {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "pleaseChoose": "Por favor, escolhe", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Por favor, escolhe um código-passe", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Por favor, clica na ligação no correio eletrónico e depois continua.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Por favor, insere 4 dígitos ou deixa vazio para desativar o bloqueio da aplicação.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Por favor, insere a tua palavra-passe", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Por favor, insere o teu código", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Por favor, insere o teu nome de utilizador", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Por favor, segue as instruções no website e clica em \"Seguinte\".", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Privacidade", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Salas públicas", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "reason": "Razão", - "@reason": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} eliminou um evento", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "recording": "A gravar", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactMessage": "Eliminar mensagem", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "register": "Registar", - "@register": { - "type": "text", - "placeholders": {} - }, - "reject": "Rejeitar", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejectedTheInvitation": "{username} rejeitou o convite", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejoin": "Reentrar", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Remover", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Remover todos os outros dispositivos", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removedBy": "Removido por {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removeDevice": "Remover dispositivo", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "unbanFromChat": "Perdoar nesta conversa", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Remover o teu avatar", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Exibir conteúdo de mensagem rico", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Substituir sala com versão mais recente", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "reply": "Responder", - "@reply": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Reportar mensagem", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Pedir permissão", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "A sala foi atualizada", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Versão da sala", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Guardar ficheiro", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "search": "Procurar", - "@search": { - "type": "text", - "placeholders": {} - }, - "security": "Segurança", - "@security": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Visto por {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sendFile": "Enviar ficheiro", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Enviar imagem", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Enviar mensagens", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Enviar original", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendSticker": "Enviar autocolante", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Enviar vídeo", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "{username} enviar um ficheiro", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "{username} enviar um áudio", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAPicture": "{username} enviar uma imagem", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "{username} enviou um autocolante", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "{username} enviou um vídeo", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "commandHint_clearcache": "Limpar cache", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandHint_create": "Criar uma conversa de grupo vazia\nUsa --no-encryption para desativar a encriptação", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_discardsession": "Descartar sessão", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "commandHint_dm": "Iniciar uma conversa direta\nUsa --no-encryption para desativar a encriptação", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "dehydrate": "Exportar sessão e limpar dispositivo", - "@dehydrate": {}, - "dehydrateWarning": "Esta ação não pode ser revertida. Assegura-te que guardas bem a cópia de segurança.", - "@dehydrateWarning": {}, - "hydrateTorLong": "Exportaste a tua sessão na última vez que estiveste no TOR? Importa-a rapidamente e continua a conversar.", - "@hydrateTorLong": {}, - "dehydrateTor": "Utilizadores do TOR: Exportar sessão", - "@dehydrateTor": {}, - "hydrate": "Restaurar a partir de cópia de segurança", - "@hydrate": {}, - "hydrateTor": "Utilizadores do TOR: Importar sessão", - "@hydrateTor": {}, - "dehydrateTorLong": "Para utilizadores do TOR, é recomendado exportar a sessão antes de fechar a janela.", - "@dehydrateTorLong": {}, - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "@reportErrorDescription": {}, - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "@unsupportedAndroidVersion": {}, - "@widgetJitsi": {}, - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "@startFirstChat": {}, - "@callingAccount": {}, - "@setColorTheme": {}, - "@nextAccount": {}, - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "@warning": { - "type": "text", - "placeholders": {} - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@user": {}, - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "@youAcceptedTheInvitation": {}, - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@banUserDescription": {}, - "@widgetEtherpad": {}, - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@unbanUserDescription": {}, - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "@previousAccount": {}, - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "@widgetNameError": {}, - "@unpin": { - "type": "text", - "placeholders": {} - }, - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "@addWidget": {}, - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_markasgroup": {}, - "@pushNotificationsNotAvailable": {}, - "@storeInAppleKeyChain": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@signInWithPassword": {}, - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "@makeAdminDescription": {}, - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "@saveKeyManuallyDescription": {}, - "@whyIsThisMessageEncrypted": {}, - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "@setChatDescription": {}, - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "@importFromZipFile": {}, - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "@noOtherDevicesFound": {}, - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@submit": { - "type": "text", - "placeholders": {} - }, - "@videoCallsBetaWarning": {}, - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "@yes": { - "type": "text", - "placeholders": {} - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@username": { - "type": "text", - "placeholders": {} - }, - "@fileIsTooBigForServer": {}, - "@verified": { - "type": "text", - "placeholders": {} - }, - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "@callingPermissions": {}, - "@readUpToHere": {}, - "@start": {}, - "@unlockOldMessages": {}, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@optionalRedactReason": {}, - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "@experimentalVideoCalls": {}, - "@pleaseEnterRecoveryKeyDescription": {}, - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@skip": { - "type": "text", - "placeholders": {} - }, - "@appearOnTopDetails": {}, - "@enterRoom": {}, - "@reportUser": {}, - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@recoveryKey": {}, - "@invalidInput": {}, - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "@doNotShowAgain": {}, - "@report": {}, - "@status": { - "type": "text", - "placeholders": {} - }, - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "@unverified": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "@foregroundServiceRunning": {}, - "@voiceCall": {}, - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@you": { - "type": "text", - "placeholders": {} - }, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@newGroup": {}, - "@removeFromSpace": {}, - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "@roomUpgradeDescription": {}, - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "@scanQrCode": {}, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "@settings": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@widgetName": {}, - "@errorAddingWidget": {}, - "@commandHint_hug": {}, - "@replace": {}, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "@newSpace": {}, - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "@emojis": {}, - "@share": { - "type": "text", - "placeholders": {} - }, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@time": {}, - "@custom": {}, - "@noBackupWarning": {}, - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "@verify": { - "type": "text", - "placeholders": {} - }, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "@pinMessage": {}, - "@invite": {}, - "@indexedDbErrorTitle": {}, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@placeCall": {} -} \ No newline at end of file + "repeatPassword": "Repete a palavra-passe", + "@repeatPassword": {}, + "about": "Acerca de", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Aceitar", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} aceitou o convite", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Conta", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} ativou encriptação ponta-a-ponta", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Adicionar correio eletrónico", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Adicionar ao espaço", + "@addToSpace": {}, + "admin": "Admin", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "alcunha", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "Todos(as)", + "@all": { + "type": "text", + "placeholders": {} + }, + "allChats": "Todas as conversas", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} atendeu a chamada", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Qualquer pessoa pode entrar", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Arquivo", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Todos os visitantes podem entrar", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Tens a certeza?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Tens a certeza que queres sair?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Para poderes assinar a outra pessoa, por favor, insere a tua senha de armazenamento seguro ou a chave de recuperação.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Aceitar este pedido de verificação de {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "autoplayImages": "Automaticamente reproduzir autocolantes e emotes animados", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "sendOnEnter": "Enviar com Enter", + "@sendOnEnter": {}, + "badServerVersionsException": "O servidor suporta as versões Spec:\n{serverVersions}\nMas esta aplicação apenas suporta {suportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerLoginTypesException": "O servidor suporta os tipos de início de sessão:\n{serverVersions}\nMas esta aplicação apenas suporta:\n{suportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "banFromChat": "Banir da conversa", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Banido(a)", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} baniu {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Mensagens de robôs", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "Não é possível abrir o URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changeDeviceName": "Alterar nome do dispositivo", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheChatPermissions": "{username} alterou as permissões da conversa", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} alterou o seu nome para: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} alterou as regras de acesso de visitantes para: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} alterou as regras de entrada", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} alterou as regras de entrada para: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} alterou o seu avatar", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} alterou as alcunhas da sala", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} alterou a ligação de convite", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Alterar palavra-passe", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Alterar o servidor", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Alterar o teu estilo", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Alterar o nome do grupo", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Alterar o teu avatar", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "A encriptação foi corrompida", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Conversa", + "@chat": { + "type": "text", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "A cópia de segurança foi configurada.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Cópia de segurança de conversas", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "A tuas mensagens antigas estão protegidas com uma chave de recuperação. Por favor, certifica-te que não a perdes.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Detalhes de conversa", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "A conversa foi adicionada a este espaço", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Conversas", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Escolhe uma palavra-passe forte", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Limpar arquivo", + "@clearArchive": {}, + "close": "Fechar", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Banir o utilizador dado desta sala", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Enviar texto formatado com HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Convidar o utilizador dado a esta sala", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Entrar na sala dada", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Remover o utilizador dado desta sala", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Sair desta sala", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Descreve-te", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Definir a tua imagem para esta sala (por mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Definir o teu nome para esta sala", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Definir o nível de poder do utilizador dado (por omissão: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar texto não formatado", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar respostas como reações", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Enviar texto", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Perdoar o utilizador dado", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Comando inválido", + "@commandInvalid": { + "type": "text" + }, + "commandMissing": "{command} não é um comando.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Compara e certifica-te que os emojis que se seguem correspondem aos do outro dispositivo:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Compara e certifica-te que os números que se seguem correspondem aos do outro dispositivo:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Configurar conversa", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Ligar", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "O contacto foi convidado para o grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Contém nome de exibição", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Contém nome de utilizador", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "O conteúdo foi denunciado aos admins do servidor", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Copiado para a área de transferência", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Copiar para a área de transferência", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Não foi possível desencriptar mensagem: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Criar", + "@create": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} criou a conversa", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewSpace": "Novo espaço", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Ativo(a) agora", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Escuro", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date} às {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Isto irá desativar a tua conta. Não é reversível! Tens a certeza?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Nível de permissão normal", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Eliminar conta", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Eliminar mensagem", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "ID de dispositivo", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "text", + "placeholders": {} + }, + "directChats": "Conversas diretas", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Nome de exibição alterado", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Descarregar ficheiro", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueados", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Editar nome de exibição", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Editar alcunhas da sala", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Editar avatar da sala", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Emote já existente!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Código de emote inválido!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Pacotes de emotes da sala", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Configurações de emotes", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Código do emote", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Precisas de escolher um código de emote e uma imagem!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Conversa vazia", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Ativar pacote de emotes globalmente", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Ativar encriptação", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Nunca mais poderás desativar a encriptação. Tens a certeza?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Encriptada", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryption": "Encriptação", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "A encriptação não está ativada", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} terminou a chamada", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAnEmailAddress": "Insere um endereço de correio eletrónico", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "homeserver": "Servidor", + "@homeserver": {}, + "enterYourHomeserver": "Insere o teu servidor", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "errorObtainingLocation": "Erro ao obter localização: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "everythingReady": "Tudo a postos!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Extremamente ofensivo", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "fileName": "Nome do ficheiro", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Tamanho da letra", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "forward": "Reencaminhar", + "@forward": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Ir para a nova sala", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "O grupo é público", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Grupo com {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "São proibidos visitantes", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Podem entrar visitantes", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} revogou o convite para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Ajuda", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Esconder eventos eliminados", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Esconder eventos desconhecidos", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Quão ofensivo é este conteúdo?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Identidade", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Utilizadores ignorados", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Eu cliquei na ligação", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Senha ou chave de recuperação incorretos", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Convidar contacto", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Convidar contacto para {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Convidado(a)", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "{username} convidou {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Utilizadores(as) convidados(as) apenas", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteForMe": "Convite para mim", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} convidou-te para o FluffyChat.\n1. Instala o FluffyChat: https://fluffychat.im\n2. Regista-te ou inicia sessão.\n3. Abre a ligação de convite: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isTyping": "está a escrever…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} entrou na conversa", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Entrar na sala", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} expulsou {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} expulsou e baniu {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Expulsar da conversa", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Ativo(a) pela última vez: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "leave": "Sair", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Saiu da conversa", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licença", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Carregar mais {count} participantes", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "A carregar... Por favor aguarde.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Carregar mais…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "locationDisabledNotice": "Os serviços de localização estão desativados. Por favor, ativa-os para poder partilhar a sua localização.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permissão de localização recusada. Por favor, concede permissão para poderes partilhar a tua posição.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "login": "Entrar", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Entrar em {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Sair", + "@logout": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Alterações de membros", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "Mencionar", + "@mention": { + "type": "text", + "placeholders": {} + }, + "messages": "Mensagens", + "@messages": { + "type": "text", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Silenciar conversa", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Por favor,", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newChat": "Nova conversa", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nova mensagem no FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Novo pedido de verificação!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Próximo", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "Não", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Nenhuma ligação ao servidor", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Nenhuns emotes encontrados. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Só podes ativar a encriptação quando a sala não for publicamente acessível.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Parece que não tens nenhuns serviços da Google no seu telemóvel. É uma boa decisão para a sua privacidade! Para receber notificações instantâneas no FluffyChat, recomendamos que uses https://microg.org/ ou https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} não é um servidor Matrix, usar {server2}?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "none": "Nenhum", + "@none": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} alterou o avatar da conversa", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} alterou a visibilidade do histórico para: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheChatDescriptionTo": "{username} alterou a descrição da conversa para: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} alterou o nome da conversa para: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheGuestAccessRules": "{username} alterou as regras de acesso de visitantes", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibility": "{username} alterou a visibilidade do histórico", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sendAMessage": "Enviar a mensagem", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Enviar áudio", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "text" + }, + "send": "Enviar", + "@send": { + "type": "text", + "placeholders": {} + }, + "appLock": "Bloqueio da aplicação", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Ainda não adicionaste uma forma de recuperar a tua palavra-passe.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Sem permissão", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Não foram encontradas nenhumas salas…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "Notificações", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificações ativadas para esta conta", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "numUsersTyping": "Estão {count} utilizadores(as) a escrever…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "obtainingLocation": "A obter localização…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "offensive": "Offensivo", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "text", + "placeholders": {} + }, + "ok": "ok", + "@ok": { + "type": "text", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "A cópia de segurança online de chaves está ativada", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Ups! Infelizmente, ocorreu um erro ao configurar as notificações instantâneas.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, algo correu mal…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Abrir aplicação para ler mensagens", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Abrir câmara", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "Um dos teus clientes terminou sessão", + "@oneClientLoggedOut": {}, + "addAccount": "Adicionar conta", + "@addAccount": {}, + "editBundlesForAccount": "Editar pacotes para esta conta", + "@editBundlesForAccount": {}, + "addToBundle": "Adicionar ao pacote", + "@addToBundle": {}, + "removeFromBundle": "Remover deste pacote", + "@removeFromBundle": {}, + "bundleName": "Nome do pacote", + "@bundleName": {}, + "enableMultiAccounts": "(BETA) Ativar múltiplas contas neste dispositivo", + "@enableMultiAccounts": {}, + "openInMaps": "Abrir nos mapas", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "link": "Ligação", + "@link": {}, + "serverRequiresEmail": "Este servidor precisa de validar o teu endereço de correio eletrónico para o registo.", + "@serverRequiresEmail": {}, + "or": "Ou", + "@or": { + "type": "text", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "senha ou chave de recuperação", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Palavra-passe", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Palavra-passe esquecida", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "A palavra-passe foi alterada", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Recuperação de palavra-passe", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "people": "Pessoas", + "@people": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Escolher uma imagem", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Afixar", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Reproduzir {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChoose": "Por favor, escolhe", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Por favor, escolhe um código-passe", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Por favor, clica na ligação no correio eletrónico e depois continua.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Por favor, insere 4 dígitos ou deixa vazio para desativar o bloqueio da aplicação.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Por favor, insere a tua palavra-passe", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Por favor, insere o teu código", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Por favor, insere o teu nome de utilizador", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Por favor, segue as instruções no website e clica em \"Seguinte\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Privacidade", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "reason": "Razão", + "@reason": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} eliminou um evento", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "recording": "A gravar", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactMessage": "Eliminar mensagem", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "register": "Registar", + "@register": { + "type": "text", + "placeholders": {} + }, + "reject": "Rejeitar", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rejeitou o convite", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Reentrar", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Remover", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Remover todos os outros dispositivos", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Removido por {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Remover dispositivo", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "unbanFromChat": "Perdoar nesta conversa", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Remover o teu avatar", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Exibir conteúdo de mensagem rico", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Substituir sala com versão mais recente", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Reportar mensagem", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Pedir permissão", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "A sala foi atualizada", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Versão da sala", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Guardar ficheiro", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "search": "Procurar", + "@search": { + "type": "text", + "placeholders": {} + }, + "security": "Segurança", + "@security": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sendFile": "Enviar ficheiro", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Enviar imagem", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Enviar mensagens", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Enviar original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendSticker": "Enviar autocolante", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Enviar vídeo", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} enviar um ficheiro", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} enviar um áudio", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} enviar uma imagem", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} enviou um autocolante", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} enviou um vídeo", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "commandHint_clearcache": "Limpar cache", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Criar uma conversa de grupo vazia\nUsa --no-encryption para desativar a encriptação", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Descartar sessão", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Iniciar uma conversa direta\nUsa --no-encryption para desativar a encriptação", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "dehydrate": "Exportar sessão e limpar dispositivo", + "@dehydrate": {}, + "dehydrateWarning": "Esta ação não pode ser revertida. Assegura-te que guardas bem a cópia de segurança.", + "@dehydrateWarning": {}, + "hydrateTorLong": "Exportaste a tua sessão na última vez que estiveste no TOR? Importa-a rapidamente e continua a conversar.", + "@hydrateTorLong": {}, + "dehydrateTor": "Utilizadores do TOR: Exportar sessão", + "@dehydrateTor": {}, + "hydrate": "Restaurar a partir de cópia de segurança", + "@hydrate": {}, + "hydrateTor": "Utilizadores do TOR: Importar sessão", + "@hydrateTor": {}, + "dehydrateTorLong": "Para utilizadores do TOR, é recomendado exportar a sessão antes de fechar a janela.", + "@dehydrateTorLong": {} +} From bcaa57a62c4223c2e0972eb4533b0dad052ddf45 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:49 +0000 Subject: [PATCH 073/106] Translated using Weblate (Slovenian) Currently translated at 14.8% (97 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/sl/ --- assets/l10n/intl_sl.arb | 2557 +++++++++------------------------------ 1 file changed, 574 insertions(+), 1983 deletions(-) diff --git a/assets/l10n/intl_sl.arb b/assets/l10n/intl_sl.arb index c826f047d..b55d8dc7d 100644 --- a/assets/l10n/intl_sl.arb +++ b/assets/l10n/intl_sl.arb @@ -1,1984 +1,575 @@ { - "repeatPassword": "Ponovite geslo", - "@repeatPassword": {}, - "about": "O aplikaciji", - "@about": { - "type": "text", - "placeholders": {} - }, - "accept": "Sprejmi", - "@accept": { - "type": "text", - "placeholders": {} - }, - "account": "Račun", - "@account": { - "type": "text", - "placeholders": {} - }, - "activatedEndToEndEncryption": "Uporabnik {username} je aktiviral šifriranje od konca do konca", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "addEmail": "Dodajte e-pošto", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Dodajte v prostor", - "@addToSpace": {}, - "alias": "vzdevek", - "@alias": { - "type": "text", - "placeholders": {} - }, - "all": "Vse", - "@all": { - "type": "text", - "placeholders": {} - }, - "allChats": "Vsi klepeti", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "answeredTheCall": "Oseba {senderName} je odgovorila na klic", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "anyoneCanJoin": "Pridruži se lahko vsak", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "appLock": "Zaklepanje aplikacije", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Če želite podpisati drugo osebo, vnesite geslo za varno trgovino ali obnovitveni ključ.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Ali želite sprejeti to zahtevo za preverjanje od {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "autoplayImages": "Samodejno predvajajte animirane nalepke in čustva", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "badServerLoginTypesException": "Domači strežnik podpira vrste prijave:\n{serverVersions}\nToda ta aplikacija podpira samo:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "sendOnEnter": "Pošlji ob vstopu", - "@sendOnEnter": {}, - "banFromChat": "Prepoved klepeta", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Prepovedano", - "@banned": { - "type": "text", - "placeholders": {} - }, - "bannedUser": "{username} je prepovedan v {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "blockDevice": "Blokirana naprava", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Blokirano", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Botova sporočila", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "cancel": "Prekliči", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "URI-ja {uri} ni mogoče odpreti", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changedTheChatAvatar": "{username} je spremenil avatar za klepet", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatPermissions": "{username} je spremenila dovoljenja za klepet", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} je spremenil svoje prikazno ime v: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} je spremenila pravila dostopa za goste", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} je spremenila pravila dostopa za goste v: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} je spremenil vidnost zgodovine v: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} je spremenil pravila za pridružitev", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} je spremenila pravila pridružitve v: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} je spremenil avatar", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} je spremenil vzdevke sobe", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} je spremenil povezavo za povabilo", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changePassword": "Spremeni geslo", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Spremenite domači strežnik", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Spremenite svoj slog", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Spremenite ime skupine", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Spremenite svoj avatar", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "chat": "Klepet", - "@chat": { - "type": "text", - "placeholders": {} - }, - "yourChatBackupHasBeenSetUp": "Varnostna kopija klepeta je nastavljena.", - "@yourChatBackupHasBeenSetUp": {}, - "chatBackup": "Varnostno kopiranje klepeta", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Podrobnosti klepeta", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "Klepet je bil dodan v ta prostor", - "@chatHasBeenAddedToThisSpace": {}, - "chats": "Klepeti", - "@chats": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Izberite močno geslo", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Počisti arhiv", - "@clearArchive": {}, - "close": "Zapri", - "@close": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Izključi določenega uporabnika iz te sobe", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_html": "Pošljite besedilo v obliki HTML", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Povabi danega uporabnika v to sobo", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Pridružite se dani sobi", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Odstranite danega uporabnika iz te sobe", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_me": "Opisi sebe", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "commandHint_myroomavatar": "Nastavite svojo sliko za to sobo", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_op": "Nastavite raven moči danega uporabnika (privzeto: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_react": "Pošljite odgovor kot reakcijo", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandHint_send": "Pošlji besedilo", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_unban": "Prekliči izključitev določenega uporabnika iz te sobe", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandInvalid": "Ukaz ni veljaven", - "@commandInvalid": { - "type": "text" - }, - "commandMissing": "{command} is not a command.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "compareEmojiMatch": "Primerjajte in se prepričajte, da se naslednji emoji ujemajo s tistimi iz druge naprave:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Primerjajte in se prepričajte, da se naslednje številke ujemajo s številkami druge naprave:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "configureChat": "Konfigurirajte klepet", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "confirm": "Potrdi", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "containsDisplayName": "Vsebuje prikazno ime", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Vsebuje uporabniško ime", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "archive": "Arhiv", - "@archive": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Ali si prepričan?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "acceptedTheInvitation": "{username} je sprejel povabilo", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "changedTheChatDescriptionTo": "{username} je spremenil opis klepeta v: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "areGuestsAllowedToJoin": "Ali se lahko gostujoči uporabniki pridružijo", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "admin": "Admin", - "@admin": { - "type": "text", - "placeholders": {} - }, - "badServerVersionsException": "Domači strežnik podpira različice Spec:\n{serverVersions}\nToda ta aplikacija podpira samo {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "changedTheChatNameTo": "{username} je spremenil ime klepeta v: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changeDeviceName": "Spremenite ime naprave", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "changedTheHistoryVisibility": "{username} je spremenila vidnost zgodovine", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "channelCorruptedDecryptError": "Šifriranje je poškodovano", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "Vsebina je bila prijavljena skrbnikom strežnika", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "chatBackupDescription": "Varnostna kopija klepeta je zavarovana z varnostnim ključem. Prosimo, pazite, da ga ne izgubite.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "commandHint_myroomnick": "Nastavite prikazno ime za to sobo", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "connect": "Povežite se", - "@connect": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Kontakt je bil povabljen v skupino", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "commandHint_leave": "Zapusti to sobo", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "commandHint_plain": "Pošlji neformatirano besedilo", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "copiedToClipboard": "Kopirano v odložišče", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Kopiraj", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Kopiraj v odložišče", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Sporočila ni bilo mogoče dešifrirati: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} udeležencev", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "create": "Ustvari", - "@create": { - "type": "text", - "placeholders": {} - }, - "createNewSpace": "Nov prostor", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Trenutno aktiven", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Temno", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Privzeta raven dovoljenja", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "dateWithYear": "{day}-{month}-{year}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "dateWithoutYear": "{month}-{day}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "createdTheChat": "{username} je ustvaril klepet", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "deactivateAccountWarning": "S tem boste deaktivirali vaš uporabniški račun. Tega ni mogoče razveljaviti! Ali si prepričan?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@widgetVideo": {}, - "@dismiss": {}, - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "@reportErrorDescription": {}, - "@directChats": { - "type": "text", - "placeholders": {} - }, - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "@addAccount": {}, - "@reply": { - "type": "text", - "placeholders": {} - }, - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "@unsupportedAndroidVersion": {}, - "@device": { - "type": "text", - "placeholders": {} - }, - "@widgetJitsi": {}, - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "@encryption": { - "type": "text", - "placeholders": {} - }, - "@messageType": {}, - "@indexedDbErrorLong": {}, - "@oneClientLoggedOut": {}, - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "@startFirstChat": {}, - "@callingAccount": {}, - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@invited": { - "type": "text", - "placeholders": {} - }, - "@setColorTheme": {}, - "@nextAccount": {}, - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "@warning": { - "type": "text", - "placeholders": {} - }, - "@password": { - "type": "text", - "placeholders": {} - }, - "@allSpaces": {}, - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "@user": {}, - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "@youAcceptedTheInvitation": {}, - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@banUserDescription": {}, - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "@widgetEtherpad": {}, - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "@remove": { - "type": "text", - "placeholders": {} - }, - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "@id": { - "type": "text", - "placeholders": {} - }, - "@removeDevicesDescription": {}, - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "@tryAgain": {}, - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "@unbanUserDescription": {}, - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "@youRejectedTheInvitation": {}, - "@otherCallingPermissions": {}, - "@messagesStyle": {}, - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "@link": {}, - "@widgetUrlError": {}, - "@emailOrUsername": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@callingAccountDetails": {}, - "@next": { - "type": "text", - "placeholders": {} - }, - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "@enterSpace": {}, - "@encryptThisChat": {}, - "@fileName": { - "type": "text", - "placeholders": {} - }, - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "@previousAccount": {}, - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "@reopenChat": {}, - "@pleaseEnterRecoveryKey": {}, - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "@no": { - "type": "text", - "placeholders": {} - }, - "@widgetNameError": {}, - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "@unpin": { - "type": "text", - "placeholders": {} - }, - "@addToBundle": {}, - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "@addWidget": {}, - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "@noKeyForThisMessage": {}, - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "@reason": { - "type": "text", - "placeholders": {} - }, - "@commandHint_markasgroup": {}, - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "@hydrateTor": {}, - "@pushNotificationsNotAvailable": {}, - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "@storeInAppleKeyChain": {}, - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "@hydrate": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "@sender": {}, - "@storeInAndroidKeystore": {}, - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "@online": { - "type": "text", - "placeholders": {} - }, - "@signInWithPassword": {}, - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "@offensive": { - "type": "text", - "placeholders": {} - }, - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "@makeAdminDescription": {}, - "@edit": { - "type": "text", - "placeholders": {} - }, - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "@saveKeyManuallyDescription": {}, - "@none": { - "type": "text", - "placeholders": {} - }, - "@editBundlesForAccount": {}, - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "@whyIsThisMessageEncrypted": {}, - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@setChatDescription": {}, - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "@importFromZipFile": {}, - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "@or": { - "type": "text", - "placeholders": {} - }, - "@dehydrateWarning": {}, - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "@noOtherDevicesFound": {}, - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@submit": { - "type": "text", - "placeholders": {} - }, - "@videoCallsBetaWarning": {}, - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@participant": { - "type": "text", - "placeholders": {} - }, - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "@yes": { - "type": "text", - "placeholders": {} - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@username": { - "type": "text", - "placeholders": {} - }, - "@fileIsTooBigForServer": {}, - "@homeserver": {}, - "@help": { - "type": "text", - "placeholders": {} - }, - "@people": { - "type": "text", - "placeholders": {} - }, - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "@verified": { - "type": "text", - "placeholders": {} - }, - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "@callingPermissions": {}, - "@delete": { - "type": "text", - "placeholders": {} - }, - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "@readUpToHere": {}, - "@start": {}, - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "@register": { - "type": "text", - "placeholders": {} - }, - "@unlockOldMessages": {}, - "@identity": { - "type": "text", - "placeholders": {} - }, - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@ignore": { - "type": "text", - "placeholders": {} - }, - "@recording": { - "type": "text", - "placeholders": {} - }, - "@moderator": { - "type": "text", - "placeholders": {} - }, - "@optionalRedactReason": {}, - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "@ok": { - "type": "text", - "placeholders": {} - }, - "@dehydrate": {}, - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "@send": { - "type": "text", - "placeholders": {} - }, - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "@sendAsText": { - "type": "text" - }, - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@newChat": { - "type": "text", - "placeholders": {} - }, - "@notifications": { - "type": "text", - "placeholders": {} - }, - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "@experimentalVideoCalls": {}, - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "@pleaseEnterRecoveryKeyDescription": {}, - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "@mention": { - "type": "text", - "placeholders": {} - }, - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "@inviteContactToGroupQuestion": {}, - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "@group": { - "type": "text", - "placeholders": {} - }, - "@leave": { - "type": "text", - "placeholders": {} - }, - "@skip": { - "type": "text", - "placeholders": {} - }, - "@appearOnTopDetails": {}, - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "@enterRoom": {}, - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "@reportUser": {}, - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@confirmEventUnpin": {}, - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@license": { - "type": "text", - "placeholders": {} - }, - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "@redactMessageDescription": {}, - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "@recoveryKey": {}, - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "@forward": { - "type": "text", - "placeholders": {} - }, - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "@invalidInput": {}, - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "@dehydrateTorLong": {}, - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "@offline": { - "type": "text", - "placeholders": {} - }, - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "@doNotShowAgain": {}, - "@report": {}, - "@status": { - "type": "text", - "placeholders": {} - }, - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "@unverified": {}, - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "@serverRequiresEmail": {}, - "@hideUnimportantStateEvents": {}, - "@screenSharingTitle": {}, - "@widgetCustom": {}, - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@addToSpaceDescription": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "@addChatDescription": {}, - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@publish": {}, - "@openLinkInBrowser": {}, - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "@messageInfo": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "@inviteGroupChat": {}, - "@appearOnTop": {}, - "@invitePrivateChat": {}, - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "@foregroundServiceRunning": {}, - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "@voiceCall": {}, - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@removeFromBundle": {}, - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "@confirmMatrixId": {}, - "@learnMore": {}, - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "@you": { - "type": "text", - "placeholders": {} - }, - "@notAnImage": {}, - "@users": {}, - "@openGallery": {}, - "@chatDescriptionHasBeenChanged": {}, - "@search": { - "type": "text", - "placeholders": {} - }, - "@newGroup": {}, - "@bundleName": {}, - "@dehydrateTor": {}, - "@removeFromSpace": {}, - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "@roomUpgradeDescription": {}, - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "@scanQrCode": {}, - "@logout": { - "type": "text", - "placeholders": {} - }, - "@pleaseEnterANumber": {}, - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "@profileNotFound": {}, - "@jump": {}, - "@groups": { - "type": "text", - "placeholders": {} - }, - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "@sorryThatsNotPossible": {}, - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "@shareInviteLink": {}, - "@commandHint_markasdm": {}, - "@recoveryKeyLost": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@messages": { - "type": "text", - "placeholders": {} - }, - "@login": { - "type": "text", - "placeholders": {} - }, - "@deviceKeys": {}, - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "@settings": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@youJoinedTheChat": {}, - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "@security": { - "type": "text", - "placeholders": {} - }, - "@markAsRead": {}, - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "@widgetName": {}, - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@errorAddingWidget": {}, - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "@commandHint_hug": {}, - "@replace": {}, - "@reject": { - "type": "text", - "placeholders": {} - }, - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "@newSpace": {}, - "@devices": { - "type": "text", - "placeholders": {} - }, - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "@emojis": {}, - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "@share": { - "type": "text", - "placeholders": {} - }, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@privacy": { - "type": "text", - "placeholders": {} - }, - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "@hydrateTorLong": {}, - "@time": {}, - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "@custom": {}, - "@noBackupWarning": {}, - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "@verify": { - "type": "text", - "placeholders": {} - }, - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "@storeInSecureStorageDescription": {}, - "@openChat": {}, - "@kickUserDescription": {}, - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "@pin": { - "type": "text", - "placeholders": {} - }, - "@importNow": {}, - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "@pinMessage": {}, - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "@invite": {}, - "@enableMultiAccounts": {}, - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "@indexedDbErrorTitle": {}, - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@unsupportedAndroidVersionLong": {}, - "@storeSecurlyOnThisDevice": {}, - "@screenSharingDetail": {}, - "@placeCall": {} -} \ No newline at end of file + "repeatPassword": "Ponovite geslo", + "@repeatPassword": {}, + "about": "O aplikaciji", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Sprejmi", + "@accept": { + "type": "text", + "placeholders": {} + }, + "account": "Račun", + "@account": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "Uporabnik {username} je aktiviral šifriranje od konca do konca", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addEmail": "Dodajte e-pošto", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Dodajte v prostor", + "@addToSpace": {}, + "alias": "vzdevek", + "@alias": { + "type": "text", + "placeholders": {} + }, + "all": "Vse", + "@all": { + "type": "text", + "placeholders": {} + }, + "allChats": "Vsi klepeti", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "Oseba {senderName} je odgovorila na klic", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Pridruži se lahko vsak", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "appLock": "Zaklepanje aplikacije", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Če želite podpisati drugo osebo, vnesite geslo za varno trgovino ali obnovitveni ključ.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Ali želite sprejeti to zahtevo za preverjanje od {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "autoplayImages": "Samodejno predvajajte animirane nalepke in čustva", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "badServerLoginTypesException": "Domači strežnik podpira vrste prijave:\n{serverVersions}\nToda ta aplikacija podpira samo:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "sendOnEnter": "Pošlji ob vstopu", + "@sendOnEnter": {}, + "banFromChat": "Prepoved klepeta", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Prepovedano", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} je prepovedan v {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Blokirana naprava", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Blokirano", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Botova sporočila", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "cancel": "Prekliči", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "URI-ja {uri} ni mogoče odpreti", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changedTheChatAvatar": "{username} je spremenil avatar za klepet", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatPermissions": "{username} je spremenila dovoljenja za klepet", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} je spremenil svoje prikazno ime v: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} je spremenila pravila dostopa za goste", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} je spremenila pravila dostopa za goste v: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} je spremenil vidnost zgodovine v: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} je spremenil pravila za pridružitev", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} je spremenila pravila pridružitve v: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} je spremenil avatar", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} je spremenil vzdevke sobe", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} je spremenil povezavo za povabilo", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changePassword": "Spremeni geslo", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Spremenite domači strežnik", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Spremenite svoj slog", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Spremenite ime skupine", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Spremenite svoj avatar", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "chat": "Klepet", + "@chat": { + "type": "text", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Varnostna kopija klepeta je nastavljena.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Varnostno kopiranje klepeta", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Podrobnosti klepeta", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Klepet je bil dodan v ta prostor", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Klepeti", + "@chats": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Izberite močno geslo", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Počisti arhiv", + "@clearArchive": {}, + "close": "Zapri", + "@close": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Izključi določenega uporabnika iz te sobe", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Pošljite besedilo v obliki HTML", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Povabi danega uporabnika v to sobo", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Pridružite se dani sobi", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Odstranite danega uporabnika iz te sobe", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_me": "Opisi sebe", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Nastavite svojo sliko za to sobo", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_op": "Nastavite raven moči danega uporabnika (privzeto: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Pošljite odgovor kot reakcijo", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Pošlji besedilo", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Prekliči izključitev določenega uporabnika iz te sobe", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Ukaz ni veljaven", + "@commandInvalid": { + "type": "text" + }, + "commandMissing": "{command} is not a command.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Primerjajte in se prepričajte, da se naslednji emoji ujemajo s tistimi iz druge naprave:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Primerjajte in se prepričajte, da se naslednje številke ujemajo s številkami druge naprave:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "configureChat": "Konfigurirajte klepet", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "confirm": "Potrdi", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "containsDisplayName": "Vsebuje prikazno ime", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Vsebuje uporabniško ime", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "archive": "Arhiv", + "@archive": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ali si prepričan?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} je sprejel povabilo", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "changedTheChatDescriptionTo": "{username} je spremenil opis klepeta v: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "areGuestsAllowedToJoin": "Ali se lahko gostujoči uporabniki pridružijo", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "text", + "placeholders": {} + }, + "badServerVersionsException": "Domači strežnik podpira različice Spec:\n{serverVersions}\nToda ta aplikacija podpira samo {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "changedTheChatNameTo": "{username} je spremenil ime klepeta v: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changeDeviceName": "Spremenite ime naprave", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "changedTheHistoryVisibility": "{username} je spremenila vidnost zgodovine", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "channelCorruptedDecryptError": "Šifriranje je poškodovano", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "Vsebina je bila prijavljena skrbnikom strežnika", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "chatBackupDescription": "Varnostna kopija klepeta je zavarovana z varnostnim ključem. Prosimo, pazite, da ga ne izgubite.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "commandHint_myroomnick": "Nastavite prikazno ime za to sobo", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "connect": "Povežite se", + "@connect": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt je bil povabljen v skupino", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "commandHint_leave": "Zapusti to sobo", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "commandHint_plain": "Pošlji neformatirano besedilo", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "copiedToClipboard": "Kopirano v odložišče", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopiraj", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Kopiraj v odložišče", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Sporočila ni bilo mogoče dešifrirati: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} udeležencev", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Ustvari", + "@create": { + "type": "text", + "placeholders": {} + }, + "createNewSpace": "Nov prostor", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Trenutno aktiven", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Temno", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Privzeta raven dovoljenja", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "createdTheChat": "{username} je ustvaril klepet", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "deactivateAccountWarning": "S tem boste deaktivirali vaš uporabniški račun. Tega ni mogoče razveljaviti! Ali si prepričan?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + } +} From 8689232ab7310acf07f6939467daacab865c0f9d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 25 Jul 2024 05:09:46 +0000 Subject: [PATCH 074/106] Translated using Weblate (Lithuanian) Currently translated at 70.0% (457 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/lt/ --- assets/l10n/intl_lt.arb | 4563 +++++++++++++++++++-------------------- 1 file changed, 2217 insertions(+), 2346 deletions(-) diff --git a/assets/l10n/intl_lt.arb b/assets/l10n/intl_lt.arb index 0a77ba065..0a45a29e2 100644 --- a/assets/l10n/intl_lt.arb +++ b/assets/l10n/intl_lt.arb @@ -1,2347 +1,2218 @@ { - "commandHint_leave": "Palikti pokalbių kambarį", - "@commandHint_leave": { - "type": "text", - "description": "Usage hint for the command /leave" - }, - "confirm": "Patvirtinti", - "@confirm": { - "type": "text", - "placeholders": {} - }, - "cancel": "Atšaukti", - "@cancel": { - "type": "text", - "placeholders": {} - }, - "edit": "Redaguoti", - "@edit": { - "type": "text", - "placeholders": {} - }, - "downloadFile": "Atsisiųsti failą", - "@downloadFile": { - "type": "text", - "placeholders": {} - }, - "about": "Apie", - "@about": { - "type": "text", - "placeholders": {} - }, - "all": "Visi", - "@all": { - "type": "text", - "placeholders": {} - }, - "fluffychat": "FluffyChat", - "@fluffychat": { - "type": "text", - "placeholders": {} - }, - "fileName": "Failo vardas", - "@fileName": { - "type": "text", - "placeholders": {} - }, - "changePassword": "Keisti slaptažodį", - "@changePassword": { - "type": "text", - "placeholders": {} - }, - "close": "Uždaryti", - "@close": { - "type": "text", - "placeholders": {} - }, - "archive": "Archyvas", - "@archive": { - "type": "text", - "placeholders": {} - }, - "skip": "Praleisti", - "@skip": { - "type": "text", - "placeholders": {} - }, - "share": "Bendrinti", - "@share": { - "type": "text", - "placeholders": {} - }, - "showPassword": "Rodyti slaptažodį", - "@showPassword": { - "type": "text", - "placeholders": {} - }, - "time": "Laikas", - "@time": {}, - "settings": "Nustatytmai", - "@settings": { - "type": "text", - "placeholders": {} - }, - "sender": "Siuntėjas", - "@sender": {}, - "yes": "Taip", - "@yes": { - "type": "text", - "placeholders": {} - }, - "you": "Jūs", - "@you": { - "type": "text", - "placeholders": {} - }, - "logout": "Atsijungti", - "@logout": { - "type": "text", - "placeholders": {} - }, - "messages": "Žinutės", - "@messages": { - "type": "text", - "placeholders": {} - }, - "scanQrCode": "Nuskanuokite QR kodą", - "@scanQrCode": {}, - "ok": "OK", - "@ok": { - "type": "text", - "placeholders": {} - }, - "addAccount": "Pridėti paskyrą", - "@addAccount": {}, - "or": "Arba", - "@or": { - "type": "text", - "placeholders": {} - }, - "password": "Slaptažodis", - "@password": { - "type": "text", - "placeholders": {} - }, - "passwordHasBeenChanged": "Slaptažodis pakeistas", - "@passwordHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPassword": "Įveskite savo slaptažodį", - "@pleaseEnterYourPassword": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourUsername": "Įveskite savo vartotojo vardą", - "@pleaseEnterYourUsername": { - "type": "text", - "placeholders": {} - }, - "reply": "Atsakyti", - "@reply": { - "type": "text", - "placeholders": {} - }, - "blockDevice": "Blokuoti įrenginį", - "@blockDevice": { - "type": "text", - "placeholders": {} - }, - "blocked": "Užblokuotas", - "@blocked": { - "type": "text", - "placeholders": {} - }, - "chooseAStrongPassword": "Pasirinkite saugų slaptažodį", - "@chooseAStrongPassword": { - "type": "text", - "placeholders": {} - }, - "deleteMessage": "Ištrinti žinutę", - "@deleteMessage": { - "type": "text", - "placeholders": {} - }, - "device": "Įrenginys", - "@device": { - "type": "text", - "placeholders": {} - }, - "deviceId": "Įrenginio ID", - "@deviceId": { - "type": "text", - "placeholders": {} - }, - "devices": "Įrenginiai", - "@devices": { - "type": "text", - "placeholders": {} - }, - "homeserver": "Namų serveris", - "@homeserver": {}, - "enterYourHomeserver": "Įveskite namų serverį", - "@enterYourHomeserver": { - "type": "text", - "placeholders": {} - }, - "everythingReady": "Viskas paruošta!", - "@everythingReady": { - "type": "text", - "placeholders": {} - }, - "fontSize": "Šrifto dydis", - "@fontSize": { - "type": "text", - "placeholders": {} - }, - "clearArchive": "Išvalyti archyvą", - "@clearArchive": {}, - "create": "Sukurti", - "@create": { - "type": "text", - "placeholders": {} - }, - "connect": "Prisijungti", - "@connect": { - "type": "text", - "placeholders": {} - }, - "people": "Žmonės", - "@people": { - "type": "text", - "placeholders": {} - }, - "moderator": "Moderatorius", - "@moderator": { - "type": "text", - "placeholders": {} - }, - "muteChat": "Nutildyti pokalbį", - "@muteChat": { - "type": "text", - "placeholders": {} - }, - "newChat": "Naujas pokalbis", - "@newChat": { - "type": "text", - "placeholders": {} - }, - "none": "Nė vienas", - "@none": { - "type": "text", - "placeholders": {} - }, - "noPermission": "Nėra leidimo", - "@noPermission": { - "type": "text", - "placeholders": {} - }, - "noRoomsFound": "Nerasta kambarių…", - "@noRoomsFound": { - "type": "text", - "placeholders": {} - }, - "notifications": "Pranešimai", - "@notifications": { - "type": "text", - "placeholders": {} - }, - "notificationsEnabledForThisAccount": "Pranešimai aktyvuoti šitai paskyrai", - "@notificationsEnabledForThisAccount": { - "type": "text", - "placeholders": {} - }, - "obtainingLocation": "Gaunama vieta…", - "@obtainingLocation": { - "type": "text", - "placeholders": {} - }, - "offensive": "Agresyvus", - "@offensive": { - "type": "text", - "placeholders": {} - }, - "offline": "Neprisijungta", - "@offline": { - "type": "text", - "placeholders": {} - }, - "online": "Prisijungta", - "@online": { - "type": "text", - "placeholders": {} - }, - "oopsPushError": "Oi! Deja, nustatant tiesioginius pranešimus įvyko klaida.", - "@oopsPushError": { - "type": "text", - "placeholders": {} - }, - "oopsSomethingWentWrong": "Oi, kažkas nutiko ne taip…", - "@oopsSomethingWentWrong": { - "type": "text", - "placeholders": {} - }, - "openAppToReadMessages": "Atidarykite programėlę, kad perskaityti žinutes", - "@openAppToReadMessages": { - "type": "text", - "placeholders": {} - }, - "link": "Nuoroda", - "@link": {}, - "participant": "Dalyvis", - "@participant": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "Slapta frazė arba atkūrimo raktas", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "passwordForgotten": "Slaptažodis užmirštas", - "@passwordForgotten": { - "type": "text", - "placeholders": {} - }, - "passwordRecovery": "Slaptažodžio atkūrimas", - "@passwordRecovery": { - "type": "text", - "placeholders": {} - }, - "pickImage": "Pasirinkite paveiksliuką", - "@pickImage": { - "type": "text", - "placeholders": {} - }, - "pin": "Prisegti", - "@pin": { - "type": "text", - "placeholders": {} - }, - "pleaseChoose": "Prašome pasirinkti", - "@pleaseChoose": { - "type": "text", - "placeholders": {} - }, - "pleaseChooseAPasscode": "Pasirinkite slaptą kodą", - "@pleaseChooseAPasscode": { - "type": "text", - "placeholders": {} - }, - "pleaseClickOnLink": "Paspauskite nuorodą el. pašte ir tęskite toliau.", - "@pleaseClickOnLink": { - "type": "text", - "placeholders": {} - }, - "pleaseEnter4Digits": "Įveskite 4 skaitmenis arba palikite tuščią, jei norite išjungti programėlės užraktą.", - "@pleaseEnter4Digits": { - "type": "text", - "placeholders": {} - }, - "pleaseEnterYourPin": "Įveskite savo PIN kodą", - "@pleaseEnterYourPin": { - "type": "text", - "placeholders": {} - }, - "pleaseFollowInstructionsOnWeb": "Vadovaukitės svetainėje pateiktais nurodymais ir bakstelėkite Toliau.", - "@pleaseFollowInstructionsOnWeb": { - "type": "text", - "placeholders": {} - }, - "privacy": "Privatumas", - "@privacy": { - "type": "text", - "placeholders": {} - }, - "publicRooms": "Vieši kambariai", - "@publicRooms": { - "type": "text", - "placeholders": {} - }, - "reason": "Priežastis", - "@reason": { - "type": "text", - "placeholders": {} - }, - "recording": "Įrašymas", - "@recording": { - "type": "text", - "placeholders": {} - }, - "redactMessage": "Pašalinti žinutę", - "@redactMessage": { - "type": "text", - "placeholders": {} - }, - "register": "Registruotis", - "@register": { - "type": "text", - "placeholders": {} - }, - "reject": "Atmesti", - "@reject": { - "type": "text", - "placeholders": {} - }, - "rejoin": "Vėl prisijungti", - "@rejoin": { - "type": "text", - "placeholders": {} - }, - "remove": "Pašalinti", - "@remove": { - "type": "text", - "placeholders": {} - }, - "removeAllOtherDevices": "Pašalinti visus kitus įrenginius", - "@removeAllOtherDevices": { - "type": "text", - "placeholders": {} - }, - "removeDevice": "Pašalinti įrenginį", - "@removeDevice": { - "type": "text", - "placeholders": {} - }, - "removeYourAvatar": "Pašalinti savo avatarą", - "@removeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "replaceRoomWithNewerVersion": "Pakeisti kambarį naujesne versija", - "@replaceRoomWithNewerVersion": { - "type": "text", - "placeholders": {} - }, - "requestPermission": "Prašyti leidimo", - "@requestPermission": { - "type": "text", - "placeholders": {} - }, - "roomHasBeenUpgraded": "Kambarys buvo atnaujintas", - "@roomHasBeenUpgraded": { - "type": "text", - "placeholders": {} - }, - "roomVersion": "Kambario versija", - "@roomVersion": { - "type": "text", - "placeholders": {} - }, - "search": "Ieškoti", - "@search": { - "type": "text", - "placeholders": {} - }, - "accept": "Sutinku", - "@accept": { - "type": "text", - "placeholders": {} - }, - "repeatPassword": "Pakartokite slaptažodį", - "@repeatPassword": {}, - "addEmail": "Pridėti el. paštą", - "@addEmail": { - "type": "text", - "placeholders": {} - }, - "admin": "Administratorius", - "@admin": { - "type": "text", - "placeholders": {} - }, - "alias": "slapyvardis", - "@alias": { - "type": "text", - "placeholders": {} - }, - "allChats": "Visi pokalbiai", - "@allChats": { - "type": "text", - "placeholders": {} - }, - "anyoneCanJoin": "Bet kas gali prisijungti", - "@anyoneCanJoin": { - "type": "text", - "placeholders": {} - }, - "areYouSure": "Ar esate tikri?", - "@areYouSure": { - "type": "text", - "placeholders": {} - }, - "areYouSureYouWantToLogout": "Ar tikrai norite atsijungti?", - "@areYouSureYouWantToLogout": { - "type": "text", - "placeholders": {} - }, - "changeTheHomeserver": "Pakeisti namų serverį", - "@changeTheHomeserver": { - "type": "text", - "placeholders": {} - }, - "changeTheme": "Keisti savo stilių", - "@changeTheme": { - "type": "text", - "placeholders": {} - }, - "changeTheNameOfTheGroup": "Keisti grupės pavadinimą", - "@changeTheNameOfTheGroup": { - "type": "text", - "placeholders": {} - }, - "changeYourAvatar": "Keisti savo avatarą", - "@changeYourAvatar": { - "type": "text", - "placeholders": {} - }, - "chat": "Pokalbis", - "@chat": { - "type": "text", - "placeholders": {} - }, - "chatDetails": "Pokalbio detalės", - "@chatDetails": { - "type": "text", - "placeholders": {} - }, - "chats": "Pokalbiai", - "@chats": { - "type": "text", - "placeholders": {} - }, - "commandHint_ban": "Užblokuoti vartotoją šiame kambaryje", - "@commandHint_ban": { - "type": "text", - "description": "Usage hint for the command /ban" - }, - "commandHint_clearcache": "Išvalyti laikiną talpyklą", - "@commandHint_clearcache": { - "type": "text", - "description": "Usage hint for the command /clearcache" - }, - "commandHint_discardsession": "Atmesti sesiją", - "@commandHint_discardsession": { - "type": "text", - "description": "Usage hint for the command /discardsession" - }, - "commandHint_html": "Siųsti tekstą HTML formatu", - "@commandHint_html": { - "type": "text", - "description": "Usage hint for the command /html" - }, - "commandHint_invite": "Pakviesti vartotoją į šitą kambarį", - "@commandHint_invite": { - "type": "text", - "description": "Usage hint for the command /invite" - }, - "commandHint_join": "Prisijungti prie nurodyto kambario", - "@commandHint_join": { - "type": "text", - "description": "Usage hint for the command /join" - }, - "commandHint_kick": "Pašalinti vartotoja iš šito kambario", - "@commandHint_kick": { - "type": "text", - "description": "Usage hint for the command /kick" - }, - "commandHint_myroomnick": "Nustatyti savo rodomą vardą šiame kambaryje", - "@commandHint_myroomnick": { - "type": "text", - "description": "Usage hint for the command /myroomnick" - }, - "commandHint_plain": "Siųsti neformatuotą tekstą", - "@commandHint_plain": { - "type": "text", - "description": "Usage hint for the command /plain" - }, - "commandHint_send": "Siųsti tekstą", - "@commandHint_send": { - "type": "text", - "description": "Usage hint for the command /send" - }, - "commandHint_unban": "Atblokuoti vartotoją šiame kambaryje", - "@commandHint_unban": { - "type": "text", - "description": "Usage hint for the command /unban" - }, - "commandInvalid": "Neteisinga komanda", - "@commandInvalid": { - "type": "text" - }, - "configureChat": "Konfigūruoti pokalbį", - "@configureChat": { - "type": "text", - "placeholders": {} - }, - "copiedToClipboard": "Nukopijuota į iškarpinę", - "@copiedToClipboard": { - "type": "text", - "placeholders": {} - }, - "copy": "Kopijuoti", - "@copy": { - "type": "text", - "placeholders": {} - }, - "copyToClipboard": "Koipjuoti į iškarpinę", - "@copyToClipboard": { - "type": "text", - "placeholders": {} - }, - "currentlyActive": "Šiuo metu aktyvus", - "@currentlyActive": { - "type": "text", - "placeholders": {} - }, - "darkTheme": "Tamsi", - "@darkTheme": { - "type": "text", - "placeholders": {} - }, - "delete": "Ištrinti", - "@delete": { - "type": "text", - "placeholders": {} - }, - "deleteAccount": "Panaikinti paskyra", - "@deleteAccount": { - "type": "text", - "placeholders": {} - }, - "directChats": "Tiesioginiai pokalbiai", - "@directChats": { - "type": "text", - "placeholders": {} - }, - "encrypted": "Užšifruotas", - "@encrypted": { - "type": "text", - "placeholders": {} - }, - "encryptionNotEnabled": "Šifravimas aktyvuotas", - "@encryptionNotEnabled": { - "type": "text", - "placeholders": {} - }, - "enterAnEmailAddress": "Įveskite el. pašto adresą", - "@enterAnEmailAddress": { - "type": "text", - "placeholders": {} - }, - "extremeOffensive": "Itin įžeidžiantis", - "@extremeOffensive": { - "type": "text", - "placeholders": {} - }, - "forward": "Toliau", - "@forward": { - "type": "text", - "placeholders": {} - }, - "fromJoining": "Nuo prisijungimo", - "@fromJoining": { - "type": "text", - "placeholders": {} - }, - "fromTheInvitation": "Nuo pakvietimo", - "@fromTheInvitation": { - "type": "text", - "placeholders": {} - }, - "goToTheNewRoom": "Eiti į naują kambarį", - "@goToTheNewRoom": { - "type": "text", - "placeholders": {} - }, - "group": "Grupė", - "@group": { - "type": "text", - "placeholders": {} - }, - "groupIsPublic": "Grupė yra vieša", - "@groupIsPublic": { - "type": "text", - "placeholders": {} - }, - "groups": "Grupės", - "@groups": { - "type": "text", - "placeholders": {} - }, - "guestsAreForbidden": "Svečiams draudžiama", - "@guestsAreForbidden": { - "type": "text", - "placeholders": {} - }, - "guestsCanJoin": "Svečiai gali prisijungti", - "@guestsCanJoin": { - "type": "text", - "placeholders": {} - }, - "help": "Pagalba", - "@help": { - "type": "text", - "placeholders": {} - }, - "hideRedactedEvents": "Slėpti pašalintus įvykius", - "@hideRedactedEvents": { - "type": "text", - "placeholders": {} - }, - "hideUnknownEvents": "Slėpti nežinomus įvykius", - "@hideUnknownEvents": { - "type": "text", - "placeholders": {} - }, - "identity": "Tapatybė", - "@identity": { - "type": "text", - "placeholders": {} - }, - "ignore": "Ignoruoti", - "@ignore": { - "type": "text", - "placeholders": {} - }, - "ignoredUsers": "Ignoruoti vartotojai", - "@ignoredUsers": { - "type": "text", - "placeholders": {} - }, - "leave": "Palikti", - "@leave": { - "type": "text", - "placeholders": {} - }, - "memberChanges": "Narių pokyčiai", - "@memberChanges": { - "type": "text", - "placeholders": {} - }, - "mention": "Paminėti", - "@mention": { - "type": "text", - "placeholders": {} - }, - "encryption": "Šifravimas", - "@encryption": { - "type": "text", - "placeholders": {} - }, - "enableEncryption": "Aktyvuoti šifravimą", - "@enableEncryption": { - "type": "text", - "placeholders": {} - }, - "editBlockedServers": "Redaguoti blokuotus serverius", - "@editBlockedServers": { - "type": "text", - "placeholders": {} - }, - "login": "Prisijungti", - "@login": { - "type": "text", - "placeholders": {} - }, - "sendOnEnter": "Išsiųsti paspaudus Enter", - "@sendOnEnter": {}, - "banFromChat": "Užblokuoti iš pokalbio", - "@banFromChat": { - "type": "text", - "placeholders": {} - }, - "banned": "Užblokuotas", - "@banned": { - "type": "text", - "placeholders": {} - }, - "changeDeviceName": "Pakeisti įrenginio vardą", - "@changeDeviceName": { - "type": "text", - "placeholders": {} - }, - "yourChatBackupHasBeenSetUp": "Jūsų pokalbio atsarginė kopija buvo nustatyta.", - "@yourChatBackupHasBeenSetUp": {}, - "chatBackup": "Pokalbio atsargine kopija", - "@chatBackup": { - "type": "text", - "placeholders": {} - }, - "commandHint_me": "Apibūdinkite save", - "@commandHint_me": { - "type": "text", - "description": "Usage hint for the command /me" - }, - "displaynameHasBeenChanged": "Rodomas vardas buvo pakeistas", - "@displaynameHasBeenChanged": { - "type": "text", - "placeholders": {} - }, - "editDisplayname": "Redaguoti rodomą vardą", - "@editDisplayname": { - "type": "text", - "placeholders": {} - }, - "editRoomAliases": "Redaguoti kambario pseudonimus", - "@editRoomAliases": { - "type": "text", - "placeholders": {} - }, - "editRoomAvatar": "Redaguoti kambario avatarą", - "@editRoomAvatar": { - "type": "text", - "placeholders": {} - }, - "howOffensiveIsThisContent": "Kiek įžeižiantis šis turinys?", - "@howOffensiveIsThisContent": { - "type": "text", - "placeholders": {} - }, - "id": "ID", - "@id": { - "type": "text", - "placeholders": {} - }, - "iHaveClickedOnLink": "Aš paspaudžiau nuorodą", - "@iHaveClickedOnLink": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Neteisinga slaptafrazė arba atkūrimo raktas", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "inoffensive": "Neįžeidžiantis", - "@inoffensive": { - "type": "text", - "placeholders": {} - }, - "inviteContact": "Pakviesti kontaktą", - "@inviteContact": { - "type": "text", - "placeholders": {} - }, - "invited": "Pakviestas", - "@invited": { - "type": "text", - "placeholders": {} - }, - "invitedUsersOnly": "Tik pakviesti vartotojai", - "@invitedUsersOnly": { - "type": "text", - "placeholders": {} - }, - "isTyping": "rašo…", - "@isTyping": { - "type": "text", - "placeholders": {} - }, - "joinRoom": "Prisijungti prie kambario", - "@joinRoom": { - "type": "text", - "placeholders": {} - }, - "kickFromChat": "Išmesti iš pokalbio", - "@kickFromChat": { - "type": "text", - "placeholders": {} - }, - "leftTheChat": "Paliko pokalbį", - "@leftTheChat": { - "type": "text", - "placeholders": {} - }, - "license": "Licencija", - "@license": { - "type": "text", - "placeholders": {} - }, - "lightTheme": "Šviesi", - "@lightTheme": { - "type": "text", - "placeholders": {} - }, - "loadingPleaseWait": "Kraunama… Prašome palaukti.", - "@loadingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "loadMore": "Rodyti daugiau…", - "@loadMore": { - "type": "text", - "placeholders": {} - }, - "newMessageInFluffyChat": "💬 Nauja žinutė FluffyChat'e", - "@newMessageInFluffyChat": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Nauja patvirtinimo užklausa!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "next": "Toliau", - "@next": { - "type": "text", - "placeholders": {} - }, - "no": "Ne", - "@no": { - "type": "text", - "placeholders": {} - }, - "noConnectionToTheServer": "Nėra ryšio su serveriu", - "@noConnectionToTheServer": { - "type": "text", - "placeholders": {} - }, - "setInvitationLink": "Nustatyti pakvietimo nuorodą", - "@setInvitationLink": { - "type": "text", - "placeholders": {} - }, - "singlesignon": "Vienkartinis prisijungimas", - "@singlesignon": { - "type": "text", - "placeholders": {} - }, - "sourceCode": "Programinis kodas", - "@sourceCode": { - "type": "text", - "placeholders": {} - }, - "spaceIsPublic": "Erdvė yra vieša", - "@spaceIsPublic": { - "type": "text", - "placeholders": {} - }, - "spaceName": "Erdvės pavadinimas", - "@spaceName": { - "type": "text", - "placeholders": {} - }, - "status": "Būsena", - "@status": { - "type": "text", - "placeholders": {} - }, - "statusExampleMessage": "Kaip sekasi šiandien?", - "@statusExampleMessage": { - "type": "text", - "placeholders": {} - }, - "submit": "Pateikti", - "@submit": { - "type": "text", - "placeholders": {} - }, - "synchronizingPleaseWait": "Sinchronizuojama… Prašome palaukti.", - "@synchronizingPleaseWait": { - "type": "text", - "placeholders": {} - }, - "transferFromAnotherDevice": "Perkėlimas iš kito įrenginio", - "@transferFromAnotherDevice": { - "type": "text", - "placeholders": {} - }, - "verify": "Patvirtinti", - "@verify": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Pradėti patvirtinimą", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "Jūs sėkmingai patvirtinote!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Patvirtinama kita paskyra", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "visibilityOfTheChatHistory": "Pokalbių istorijos matomumas", - "@visibilityOfTheChatHistory": { - "type": "text", - "placeholders": {} - }, - "visibleForAllParticipants": "Matoma visiems dalyviams", - "@visibleForAllParticipants": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Laukiama, kol dalyvis priims užklausą…", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "writeAMessage": "Rašyti žinutę…", - "@writeAMessage": { - "type": "text", - "placeholders": {} - }, - "youAreNoLongerParticipatingInThisChat": "Jūs nebedalyvaujate šiame pokalbyje", - "@youAreNoLongerParticipatingInThisChat": { - "type": "text", - "placeholders": {} - }, - "youHaveBeenBannedFromThisChat": "Jums buvo uždrausta dalyvauti šiame pokalbyje", - "@youHaveBeenBannedFromThisChat": { - "type": "text", - "placeholders": {} - }, - "messageInfo": "Žinutės informacija", - "@messageInfo": {}, - "removeFromSpace": "Pašalinti iš erdvės", - "@removeFromSpace": {}, - "security": "Apsauga", - "@security": { - "type": "text", - "placeholders": {} - }, - "sendAsText": "Siųsti kaip tekstą", - "@sendAsText": { - "type": "text" - }, - "sendAudio": "Siųsti garso įrašą", - "@sendAudio": { - "type": "text", - "placeholders": {} - }, - "sendImage": "Siųsti paveiksliuką", - "@sendImage": { - "type": "text", - "placeholders": {} - }, - "sendFile": "Sųsti bylą", - "@sendFile": { - "type": "text", - "placeholders": {} - }, - "sendMessages": "Siųsti žinutes", - "@sendMessages": { - "type": "text", - "placeholders": {} - }, - "sendOriginal": "Siųsti originalą", - "@sendOriginal": { - "type": "text", - "placeholders": {} - }, - "sendVideo": "Siųsti video", - "@sendVideo": { - "type": "text", - "placeholders": {} - }, - "separateChatTypes": "Atskirti tiesioginius pokalbius ir grupes", - "@separateChatTypes": { - "type": "text", - "placeholders": {} - }, - "setAsCanonicalAlias": "Nustatyti kaip pagrindinį slapyvardį", - "@setAsCanonicalAlias": { - "type": "text", - "placeholders": {} - }, - "setPermissionsLevel": "Nustatyti leidimų lygį", - "@setPermissionsLevel": { - "type": "text", - "placeholders": {} - }, - "setStatus": "Nustatyti būseną", - "@setStatus": { - "type": "text", - "placeholders": {} - }, - "shareLocation": "Bendrinti vietą", - "@shareLocation": { - "type": "text", - "placeholders": {} - }, - "systemTheme": "Sistema", - "@systemTheme": { - "type": "text", - "placeholders": {} - }, - "unavailable": "Nepasiekiamas", - "@unavailable": { - "type": "text", - "placeholders": {} - }, - "unblockDevice": "Atblokuoti įrenginį", - "@unblockDevice": { - "type": "text", - "placeholders": {} - }, - "unknownEncryptionAlgorithm": "Nežinomas šifravimo algoritmas", - "@unknownEncryptionAlgorithm": { - "type": "text", - "placeholders": {} - }, - "unmuteChat": "Įjungti pokalbio garsą", - "@unmuteChat": { - "type": "text", - "placeholders": {} - }, - "unpin": "Atsegti", - "@unpin": { - "type": "text", - "placeholders": {} - }, - "username": "Vartotojo vardas", - "@username": { - "type": "text", - "placeholders": {} - }, - "unverified": "Nepatvirtinta", - "@unverified": {}, - "verified": "Patvirtinta", - "@verified": { - "type": "text", - "placeholders": {} - }, - "videoCall": "Vaizdo skambutis", - "@videoCall": { - "type": "text", - "placeholders": {} - }, - "yourPublicKey": "Jūsų viešasis raktas", - "@yourPublicKey": { - "type": "text", - "placeholders": {} - }, - "addToSpaceDescription": "Pasirinkite erdvę, kad prie jos pridėtumėte šį pokalbį.", - "@addToSpaceDescription": {}, - "start": "Pradžia", - "@start": {}, - "account": "Paskyra", - "@account": { - "type": "text", - "placeholders": {} - }, - "addToSpace": "Pridėti į erdvę", - "@addToSpace": {}, - "appLock": "Programos užraktas", - "@appLock": { - "type": "text", - "placeholders": {} - }, - "areGuestsAllowedToJoin": "Ar svečiams leidžiama prisijungti", - "@areGuestsAllowedToJoin": { - "type": "text", - "placeholders": {} - }, - "botMessages": "Botų žinutės", - "@botMessages": { - "type": "text", - "placeholders": {} - }, - "channelCorruptedDecryptError": "Šifravimas buvo sugadintas", - "@channelCorruptedDecryptError": { - "type": "text", - "placeholders": {} - }, - "chatHasBeenAddedToThisSpace": "Pokalbis buvo pridėtas prie šios erdvės", - "@chatHasBeenAddedToThisSpace": {}, - "compareEmojiMatch": "Palyginkite jaustukus", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "compareNumbersMatch": "Palyginkite skaičius", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "contactHasBeenInvitedToTheGroup": "Kontaktas buvo pakviestas į grupę", - "@contactHasBeenInvitedToTheGroup": { - "type": "text", - "placeholders": {} - }, - "contentHasBeenReported": "Apie turinį pranešta serverio administratoriams", - "@contentHasBeenReported": { - "type": "text", - "placeholders": {} - }, - "createNewSpace": "Nauja erdvė", - "@createNewSpace": { - "type": "text", - "placeholders": {} - }, - "deactivateAccountWarning": "Tai deaktyvuos jūsų vartotojo paskyrą. Tai negali būti atšaukta! Ar jūs tuo tikri?", - "@deactivateAccountWarning": { - "type": "text", - "placeholders": {} - }, - "defaultPermissionLevel": "Numatytasis teisių lygis", - "@defaultPermissionLevel": { - "type": "text", - "placeholders": {} - }, - "enableEncryptionWarning": "Šifravimo nebegalėsite išjungti. Ar jūs tuo tikri?", - "@enableEncryptionWarning": { - "type": "text", - "placeholders": {} - }, - "send": "Siųsti", - "@send": { - "type": "text", - "placeholders": {} - }, - "sendAMessage": "Siųsti žinutę", - "@sendAMessage": { - "type": "text", - "placeholders": {} - }, - "toggleUnread": "Pažymėti kaip skaitytą/neskaitytą", - "@toggleUnread": { - "type": "text", - "placeholders": {} - }, - "tooManyRequestsWarning": "Per daug užklausų. Pabandykite dar kartą vėliau!", - "@tooManyRequestsWarning": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Laukiama, kol dalyvis priims jaustukus…", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Laukiama, kol dalyvis priims skaičius…", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "wallpaper": "Užsklanda", - "@wallpaper": { - "type": "text", - "placeholders": {} - }, - "warning": "Įspėjimas!", - "@warning": { - "type": "text", - "placeholders": {} - }, - "weSentYouAnEmail": "Išsiuntėme jums el. laišką", - "@weSentYouAnEmail": { - "type": "text", - "placeholders": {} - }, - "whoCanPerformWhichAction": "Kas gali atlikti kokį veiksmą", - "@whoCanPerformWhichAction": { - "type": "text", - "placeholders": {} - }, - "whoIsAllowedToJoinThisGroup": "Kam leidžiama prisijungti prie šios grupės", - "@whoIsAllowedToJoinThisGroup": { - "type": "text", - "placeholders": {} - }, - "whyDoYouWantToReportThis": "Kodėl norite apie tai pranešti?", - "@whyDoYouWantToReportThis": { - "type": "text", - "placeholders": {} - }, - "wipeChatBackup": "Ištrinti atsarginę pokalbių kopiją, kad sukurti naują atkūrimo raktą?", - "@wipeChatBackup": { - "type": "text", - "placeholders": {} - }, - "withTheseAddressesRecoveryDescription": "Naudodami šiuos adresus galite atkurti savo slaptažodį.", - "@withTheseAddressesRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "messageType": "Žinutės tipas", - "@messageType": {}, - "openGallery": "Atverti galeriją", - "@openGallery": {}, - "unknownDevice": "Nežinomas įrenginys", - "@unknownDevice": { - "type": "text", - "placeholders": {} - }, - "voiceMessage": "Balso žinutė", - "@voiceMessage": { - "type": "text", - "placeholders": {} - }, - "title": "FluffyChat", - "@title": { - "description": "Title for the application", - "type": "text", - "placeholders": {} - }, - "visibleForEveryone": "Matoma visiems", - "@visibleForEveryone": { - "type": "text", - "placeholders": {} - }, - "tryToSendAgain": "Pabandykite išsiųsti dar kartą", - "@tryToSendAgain": { - "type": "text", - "placeholders": {} - }, - "locationPermissionDeniedNotice": "Vietos leidimas atmestas. Suteikite leidimą kad galėtumėte bendrinti savo vietą.", - "@locationPermissionDeniedNotice": { - "type": "text", - "placeholders": {} - }, - "needPantalaimonWarning": "Atminkite, kad norint naudoti end-to-end šifravimą, reikalingas Pantalaimon.", - "@needPantalaimonWarning": { - "type": "text", - "placeholders": {} - }, - "noEncryptionForPublicRooms": "Šifravimą galite suaktyvinti tik tada, kai kambarys nebebus viešai pasiekiamas.", - "@noEncryptionForPublicRooms": { - "type": "text", - "placeholders": {} - }, - "noEmotesFound": "Nerasta jaustukų. 😕", - "@noEmotesFound": { - "type": "text", - "placeholders": {} - }, - "noGoogleServicesWarning": "Atrodo, kad jūsų telefone nėra Google Services. Tai geras sprendimas jūsų privatumui! Norėdami gauti tiesioginius pranešimus FluffyChat, rekomenduojame naudoti https://microg.org/ arba https://unifiedpush.org/.", - "@noGoogleServicesWarning": { - "type": "text", - "placeholders": {} - }, - "noPasswordRecoveryDescription": "Dar nepridėjote slaptažodžio atkūrimo būdo.", - "@noPasswordRecoveryDescription": { - "type": "text", - "placeholders": {} - }, - "oneClientLoggedOut": "Vienas iš jūsų klientų atsijungė", - "@oneClientLoggedOut": {}, - "onlineKeyBackupEnabled": "Internetinė atsarginė raktų kopija įjungta", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "openCamera": "Atidarykite kamerą", - "@openCamera": { - "type": "text", - "placeholders": {} - }, - "openVideoCamera": "Atidarykite kamerą vaizdo įrašui", - "@openVideoCamera": { - "type": "text", - "placeholders": {} - }, - "editBundlesForAccount": "Redaguoti šios paskyros paketus", - "@editBundlesForAccount": {}, - "serverRequiresEmail": "Šis serveris turi patvirtinti jūsų el. pašto adresą registracijai.", - "@serverRequiresEmail": {}, - "addToBundle": "Pridėti prie paketų", - "@addToBundle": {}, - "removeFromBundle": "Pašalinkite iš šio paketo", - "@removeFromBundle": {}, - "bundleName": "Paketo vardas", - "@bundleName": {}, - "play": "Groti {fileName}", - "@play": { - "type": "text", - "placeholders": { - "fileName": {} - } - }, - "redactedAnEvent": "{username} pašalino įvykį", - "@redactedAnEvent": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "rejectedTheInvitation": "{username} atmetė kvietimą", - "@rejectedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "removedBy": "Pašalino vartotojas {username}", - "@removedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "unbanFromChat": "Atblokuoti pokalbyje", - "@unbanFromChat": { - "type": "text", - "placeholders": {} - }, - "renderRichContent": "Atvaizduoti turtingą žinutės turinį", - "@renderRichContent": { - "type": "text", - "placeholders": {} - }, - "reportMessage": "Pranešti apie žinutę", - "@reportMessage": { - "type": "text", - "placeholders": {} - }, - "saveFile": "Išsaugoti failą", - "@saveFile": { - "type": "text", - "placeholders": {} - }, - "seenByUser": "Matė {username}", - "@seenByUser": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sendSticker": "Siųsti lipduką", - "@sendSticker": { - "type": "text", - "placeholders": {} - }, - "sentAFile": "📁 {username} atsiuntė failą", - "@sentAFile": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAnAudio": "🎤 {username} atsiuntė garso įrašą", - "@sentAnAudio": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentASticker": "😊 {username} atsiuntė lipduką", - "@sentASticker": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sharedTheLocation": "{username} bendrino savo vietą", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "startedACall": "{senderName} pradėjo skambutį", - "@startedACall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "theyDontMatch": "Jie nesutampa", - "@theyDontMatch": { - "type": "text", - "placeholders": {} - }, - "theyMatch": "Jie sutampa", - "@theyMatch": { - "type": "text", - "placeholders": {} - }, - "unbannedUser": "{username} atblokavo {targetName}", - "@unbannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "unknownEvent": "Nežinomas įvykis '{type}'", - "@unknownEvent": { - "type": "text", - "placeholders": { - "type": {} - } - }, - "userAndOthersAreTyping": "{username} ir dar {count} kiti rašo…", - "@userAndOthersAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "userAndUserAreTyping": "{username} ir {username2} rašo…", - "@userAndUserAreTyping": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, - "userIsTyping": "{username} rašo…", - "@userIsTyping": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "userSentUnknownEvent": "{username} išsiuntė {type} įvykį", - "@userSentUnknownEvent": { - "type": "text", - "placeholders": { - "username": {}, - "type": {} - } - }, - "publish": "Paskelbti", - "@publish": {}, - "openChat": "Atverti pokalbį", - "@openChat": {}, - "reportUser": "Pranešti apie vartotoją", - "@reportUser": {}, - "dismiss": "Atsisakyti", - "@dismiss": {}, - "reactedWith": "{sender} sureagavo su {reaction}", - "@reactedWith": { - "type": "text", - "placeholders": { - "sender": {}, - "reaction": {} - } - }, - "unsupportedAndroidVersion": "Nepalaikoma Android versija", - "@unsupportedAndroidVersion": {}, - "emailOrUsername": "El. paštas arba vartotojo vardas", - "@emailOrUsername": {}, - "widgetVideo": "Video", - "@widgetVideo": {}, - "widgetNameError": "Pateikite rodomą vardą.", - "@widgetNameError": {}, - "acceptedTheInvitation": "👍 {username} priėmė kvietimą", - "@acceptedTheInvitation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "activatedEndToEndEncryption": "🔐 {username} aktyvavo visapusį šifravimą", - "@activatedEndToEndEncryption": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "answeredTheCall": "{senderName} atsiliepė į skambutį", - "@answeredTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "askVerificationRequest": "Priimti šią patvirtinimo užklausą iš {username}?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "badServerLoginTypesException": "Namų serveris palaiko šiuos prisijungimo tipus:\n{serverVersions}\nTačiau ši programa palaiko tik:\n{supportedVersions}", - "@badServerLoginTypesException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "badServerVersionsException": "Namų serveris palaiko spec. versijas:\n{serverVersions}\nTačiau ši programa palaiko tik {supportedVersions}", - "@badServerVersionsException": { - "type": "text", - "placeholders": { - "serverVersions": {}, - "supportedVersions": {} - } - }, - "bannedUser": "{username} užblokavo {targetName}", - "@bannedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "changedTheHistoryVisibility": "{username} pakeitė istorijos matomumą", - "@changedTheHistoryVisibility": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheHistoryVisibilityTo": "{username} pakeitė istorijos matomumą į: {rules}", - "@changedTheHistoryVisibilityTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "chatBackupDescription": "Jūsų senos žinutės yra apsaugotos atkūrimo raktu. Pasirūpinkite, kad jo neprarastumėte.", - "@chatBackupDescription": { - "type": "text", - "placeholders": {} - }, - "commandHint_create": "Sukurti tuščią grupinį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", - "@commandHint_create": { - "type": "text", - "description": "Usage hint for the command /create" - }, - "commandHint_dm": "Pradėti tiesioginį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", - "@commandHint_dm": { - "type": "text", - "description": "Usage hint for the command /dm" - }, - "commandHint_myroomavatar": "Nustatyti savo nuotrauką šiame kambaryje (su mxc-uri)", - "@commandHint_myroomavatar": { - "type": "text", - "description": "Usage hint for the command /myroomavatar" - }, - "commandHint_op": "Nustatyti naudotojo galios lygį (numatytasis: 50)", - "@commandHint_op": { - "type": "text", - "description": "Usage hint for the command /op" - }, - "commandHint_react": "Siųsti atsakymą kaip reakciją", - "@commandHint_react": { - "type": "text", - "description": "Usage hint for the command /react" - }, - "commandMissing": "{command} nėra komanda.", - "@commandMissing": { - "type": "text", - "placeholders": { - "command": {} - }, - "description": "State that {command} is not a valid /command." - }, - "containsDisplayName": "Turi rodomą vardą", - "@containsDisplayName": { - "type": "text", - "placeholders": {} - }, - "containsUserName": "Turi vartotojo vardą", - "@containsUserName": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Nepavyko iššifruoti pranešimo: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "countParticipants": "{count} dalyviai", - "@countParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "createdTheChat": "💬 {username} sukūrė pokalbį", - "@createdTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "emptyChat": "Tuščias pokalbis", - "@emptyChat": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Jaustukas jau egzistuoja!", - "@emoteExists": { - "type": "text", - "placeholders": {} - }, - "emoteInvalid": "Neteisingas jaustuko trumpasis kodas!", - "@emoteInvalid": { - "type": "text", - "placeholders": {} - }, - "emotePacks": "Jaustukų paketai kambariui", - "@emotePacks": { - "type": "text", - "placeholders": {} - }, - "emoteSettings": "Jaustukų nustatymai", - "@emoteSettings": { - "type": "text", - "placeholders": {} - }, - "emoteShortcode": "Jaustuko trumpasis kodas", - "@emoteShortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Turite pasirinkti jaustuko trumpąjį kodą ir paveiksliuką!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "enableEmotesGlobally": "Įgalinti jaustukų paketą visur", - "@enableEmotesGlobally": { - "type": "text", - "placeholders": {} - }, - "endedTheCall": "{senderName} baigė skambutį", - "@endedTheCall": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "errorObtainingLocation": "Klaida nustatant vietą: {error}", - "@errorObtainingLocation": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "groupWith": "Grupė su {displayname}", - "@groupWith": { - "type": "text", - "placeholders": { - "displayname": {} - } - }, - "hasWithdrawnTheInvitationFor": "{username} atšaukė {targetName} kvietimą", - "@hasWithdrawnTheInvitationFor": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "inviteForMe": "Pakvietimas man", - "@inviteForMe": { - "type": "text", - "placeholders": {} - }, - "inviteContactToGroup": "Pakviesti kontaktą į {groupName}", - "@inviteContactToGroup": { - "type": "text", - "placeholders": { - "groupName": {} - } - }, - "invitedUser": "📩 {username} pakvietė {targetName}", - "@invitedUser": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "inviteText": "{username} pakvietė jus prisijungti prie FluffyChat. \n1. Įdiekite FluffyChat: https://fluffychat.im \n2. Prisiregistruokite arba prisijunkite \n3. Atidarykite pakvietimo nuorodą: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, - "joinedTheChat": "👋 {username} prisijungė prie pokalbio", - "@joinedTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "kicked": "👞 {username} išmetė {targetName}", - "@kicked": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "kickedAndBanned": "🙅 {username} išmetė ir užblokavo {targetName}", - "@kickedAndBanned": { - "type": "text", - "placeholders": { - "username": {}, - "targetName": {} - } - }, - "lastActiveAgo": "Paskutinis aktyvumas: {localizedTimeShort}", - "@lastActiveAgo": { - "type": "text", - "placeholders": { - "localizedTimeShort": {} - } - }, - "loadCountMoreParticipants": "Įkelti dar {count} dalyvius", - "@loadCountMoreParticipants": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "logInTo": "Prisijungti prie {homeserver}", - "@logInTo": { - "type": "text", - "placeholders": { - "homeserver": {} - } - }, - "toggleFavorite": "Perjungti parankinius", - "@toggleFavorite": { - "type": "text", - "placeholders": {} - }, - "toggleMuted": "Perjungti nutildytą", - "@toggleMuted": { - "type": "text", - "placeholders": {} - }, - "cantOpenUri": "Nepavyksta atidaryti URI {uri}", - "@cantOpenUri": { - "type": "text", - "placeholders": { - "uri": {} - } - }, - "changedTheChatAvatar": "{username} pakeitė pokalbio avatarą", - "@changedTheChatAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheChatDescriptionTo": "{username} pakeitė pokalbio aprašymą į: '{description}'", - "@changedTheChatDescriptionTo": { - "type": "text", - "placeholders": { - "username": {}, - "description": {} - } - }, - "changedTheChatNameTo": "{username} pakeitė pokalbio pavadinimą į: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatPermissions": "{username} pakeitė pokalbių leidimus", - "@changedTheChatPermissions": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheDisplaynameTo": "{username} pakeitė rodomą vardą į: '{displayname}'", - "@changedTheDisplaynameTo": { - "type": "text", - "placeholders": { - "username": {}, - "displayname": {} - } - }, - "changedTheGuestAccessRules": "{username} pakeitė svečio prieigos taisykles", - "@changedTheGuestAccessRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheGuestAccessRulesTo": "{username} pakeitė svečio prieigos taisykles į: {rules}", - "@changedTheGuestAccessRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "rules": {} - } - }, - "changedTheJoinRules": "{username} pakeitė prisijungimo taisykles", - "@changedTheJoinRules": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheJoinRulesTo": "{username} pakeitė prisijungimo taisykles į: {joinRules}", - "@changedTheJoinRulesTo": { - "type": "text", - "placeholders": { - "username": {}, - "joinRules": {} - } - }, - "changedTheProfileAvatar": "{username} pakeitė savo avatarą", - "@changedTheProfileAvatar": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomAliases": "{username} pakeitė kambario pseudonimus", - "@changedTheRoomAliases": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "changedTheRoomInvitationLink": "{username} pakeitė pakvietimo nuorodą", - "@changedTheRoomInvitationLink": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "videoWithSize": "Vaizdo įrašas ({size})", - "@videoWithSize": { - "type": "text", - "placeholders": { - "size": {} - } - }, - "pinMessage": "Prisegti prie kambario", - "@pinMessage": {}, - "confirmEventUnpin": "Ar tikrai norite visam laikui atsegti įvykį?", - "@confirmEventUnpin": {}, - "emojis": "Jaustukai", - "@emojis": {}, - "placeCall": "Skambinti", - "@placeCall": {}, - "voiceCall": "Balso skambutis", - "@voiceCall": {}, - "unsupportedAndroidVersionLong": "Šiai funkcijai reikalinga naujesnė Android versija. Patikrinkite, ar nėra naujinimų arba Lineage OS palaikymo.", - "@unsupportedAndroidVersionLong": {}, - "videoCallsBetaWarning": "Atminkite, kad vaizdo skambučiai šiuo metu yra beta versijos. Jie gali neveikti taip kaip tikėtasi, arba iš viso neveikti visose platformose.", - "@videoCallsBetaWarning": {}, - "experimentalVideoCalls": "Eksperimentiniai vaizdo skambučiai", - "@experimentalVideoCalls": {}, - "switchToAccount": "Perjungti paskyrą į {number}", - "@switchToAccount": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "nextAccount": "Kita paskyra", - "@nextAccount": {}, - "previousAccount": "Ankstesnė paskyra", - "@previousAccount": {}, - "widgetEtherpad": "Teksto pastaba", - "@widgetEtherpad": {}, - "widgetJitsi": "Jitsi Meet", - "@widgetJitsi": {}, - "widgetName": "Vardas", - "@widgetName": {}, - "widgetUrlError": "Netinkamas URL.", - "@widgetUrlError": {}, - "youRejectedTheInvitation": "Jūs atmetėte kvietimą", - "@youRejectedTheInvitation": {}, - "youJoinedTheChat": "Jūs prisijungėte prie pokalbio", - "@youJoinedTheChat": {}, - "youAcceptedTheInvitation": "👍 Jūs priėmėte kvietimą", - "@youAcceptedTheInvitation": {}, - "youBannedUser": "Jūs užblokavote {user}", - "@youBannedUser": { - "placeholders": { - "user": {} - } - }, - "youHaveWithdrawnTheInvitationFor": "Jūs atšaukėte kvietimą {user}", - "@youHaveWithdrawnTheInvitationFor": { - "placeholders": { - "user": {} - } - }, - "youInvitedBy": "📩 Jus pakvietė {user}", - "@youInvitedBy": { - "placeholders": { - "user": {} - } - }, - "youKicked": "👞 Jūs išmetėte {user}", - "@youKicked": { - "placeholders": { - "user": {} - } - }, - "youInvitedUser": "📩 Pakvietėte {user}", - "@youInvitedUser": { - "placeholders": { - "user": {} - } - }, - "youKickedAndBanned": "🙅 Jūs išmetėte ir užblokavote {user}", - "@youKickedAndBanned": { - "placeholders": { - "user": {} - } - }, - "youUnbannedUser": "Jūs atblokavote {user}", - "@youUnbannedUser": { - "placeholders": { - "user": {} - } - }, - "dateAndTimeOfDay": "{date}, {timeOfDay}", - "@dateAndTimeOfDay": { - "type": "text", - "placeholders": { - "date": {}, - "timeOfDay": {} - } - }, - "dateWithoutYear": "{month}-{day}", - "@dateWithoutYear": { - "type": "text", - "placeholders": { - "month": {}, - "day": {} - } - }, - "dateWithYear": "{year}-{month}-{day}", - "@dateWithYear": { - "type": "text", - "placeholders": { - "year": {}, - "month": {}, - "day": {} - } - }, - "locationDisabledNotice": "Vietos nustatymo paslaugos yra išjungtos. Kad galėtumėte bendrinti savo buvimo vietą, įjunkite jas.", - "@locationDisabledNotice": { - "type": "text", - "placeholders": {} - }, - "noMatrixServer": "{server1} nėra Matrix serveris, ar vietoj jo naudoti {server2}?", - "@noMatrixServer": { - "type": "text", - "placeholders": { - "server1": {}, - "server2": {} - } - }, - "numUsersTyping": "{count} vartotojai rašo…", - "@numUsersTyping": { - "type": "text", - "placeholders": { - "count": {} - } - }, - "enableMultiAccounts": "(BETA) Įgalinkite kelias paskyras šiame įrenginyje", - "@enableMultiAccounts": {}, - "openInMaps": "Atidaryti žemėlapiuose", - "@openInMaps": { - "type": "text", - "placeholders": {} - }, - "sentAPicture": "🖼️ {username} atsiuntė nuotrauką", - "@sentAPicture": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentAVideo": "🎥 {username} atsiuntė vaizdo įrašą", - "@sentAVideo": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "sentCallInformations": "{senderName} išsiuntė skambučio informaciją", - "@sentCallInformations": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "setCustomEmotes": "Nustatyti pasirinktinius jaustukus", - "@setCustomEmotes": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "🚪 {username} paliko pokalbį", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "markAsRead": "Žymėti kaip skaitytą", - "@markAsRead": {}, - "pushRules": "Tiesioginių pranešimų taisyklės", - "@pushRules": { - "type": "text", - "placeholders": {} - }, - "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} neperskaityti pokalbiai}}", - "@unreadChats": { - "type": "text", - "placeholders": { - "unreadCount": {} - } - }, - "addWidget": "Pridėti programėlę", - "@addWidget": {}, - "widgetCustom": "Pasirinktinis", - "@widgetCustom": {}, - "errorAddingWidget": "Pridedant valdiklį įvyko klaida.", - "@errorAddingWidget": {}, - "askSSSSSign": "Kad galėtumėte prijungti kitą asmenį, įveskite savo saugyklos slaptafrazę arba atkūrimo raktą.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "autoplayImages": "Automatiškai leisti animuotus lipdukus ir jaustukus", - "@autoplayImages": { - "type": "text", - "placeholder": {} - }, - "commandHint_markasdm": "Pažymėti kaip tiesioginio pokalbio kambarį", - "@commandHint_markasdm": {}, - "dehydrateTorLong": "TOR naudotojams rekomenduojama eksportuoti sesiją prieš uždarant langą.", - "@dehydrateTorLong": {}, - "dehydrateWarning": "Šio veiksmo negalima atšaukti. Įsitikinkite, kad saugiai saugote atsarginę kopiją.", - "@dehydrateWarning": {}, - "hydrateTorLong": "Ar paskutinį kartą eksportavote savo sesiją naudodami TOR? Greitai ją importuokite ir tęskite pokalbį.", - "@hydrateTorLong": {}, - "commandHint_markasgroup": "Pažymėti kaip grupę", - "@commandHint_markasgroup": {}, - "pleaseEnterRecoveryKeyDescription": "Norėdami atrakinti senas žinutes, įveskite atkūrimo raktą, kuris buvo sukurtas ankstesnės sesijos metu. Atkūrimo raktas NĖRA jūsų slaptažodis.", - "@pleaseEnterRecoveryKeyDescription": {}, - "callingPermissions": "Skambinimo leidimai", - "@callingPermissions": {}, - "storeInAppleKeyChain": "Saugoti Apple raktų grandinėje", - "@storeInAppleKeyChain": {}, - "callingAccount": "Skambinimo paskyra", - "@callingAccount": {}, - "newSpace": "Nauja erdvė", - "@newSpace": {}, - "callingAccountDetails": "Leidžia FluffyChat naudoti vietinę Android rinkiklio programą.", - "@callingAccountDetails": {}, - "appearOnTop": "Rodyti viršuje", - "@appearOnTop": {}, - "enterSpace": "Įeiti į erdvę", - "@enterSpace": {}, - "enterRoom": "Įeiti į kambarį", - "@enterRoom": {}, - "allSpaces": "Visos erdvės", - "@allSpaces": {}, - "user": "Vartotojas", - "@user": {}, - "custom": "Pasirinktinis", - "@custom": {}, - "confirmMatrixId": "Norėdami ištrinti savo paskyrą, patvirtinkite savo Matrix ID.", - "@confirmMatrixId": {}, - "supposedMxid": "Tai turėtų būti {mxid}", - "@supposedMxid": { - "type": "text", - "placeholders": { - "mxid": {} - } - }, - "dehydrate": "Eksportuoti sesiją ir išvalyti įrenginį", - "@dehydrate": {}, - "dehydrateTor": "TOR Naudotojai: Eksportuoti sesiją", - "@dehydrateTor": {}, - "hydrateTor": "TOR Naudotojai: Importuoti sesijos eksportą", - "@hydrateTor": {}, - "hydrate": "Atkurti iš atsarginės kopijos failo", - "@hydrate": {}, - "pleaseEnterRecoveryKey": "Įveskite savo atkūrimo raktą:", - "@pleaseEnterRecoveryKey": {}, - "recoveryKey": "Atkūrimo raktas", - "@recoveryKey": {}, - "recoveryKeyLost": "Pamestas atkūrimo raktas?", - "@recoveryKeyLost": {}, - "indexedDbErrorLong": "Deja, pagal numatytuosius nustatymus žinučių saugojimas privačiame režime nėra įjungtas.\nPrašome apsilankyti\n - about:config\n - nustatykite dom.indexedDB.privateBrowsing.enabled į true\nPriešingu atveju FluffyChat paleisti neįmanoma.", - "@indexedDbErrorLong": {}, - "countFiles": "{count} failai", - "@countFiles": { - "placeholders": { - "count": {} - } - }, - "storeInSecureStorageDescription": "Atkūrimo raktą laikyti saugioje šio prietaiso saugykloje.", - "@storeInSecureStorageDescription": {}, - "saveKeyManuallyDescription": "Įrašykite šį raktą rankiniu būdu, įjungę sistemos bendrinimo dialogo langą arba iškarpinę.", - "@saveKeyManuallyDescription": {}, - "users": "Vartotojai", - "@users": {}, - "storeSecurlyOnThisDevice": "Saugiai laikyti šiame prietaise", - "@storeSecurlyOnThisDevice": {}, - "unlockOldMessages": "Atrakinti senas žinutes", - "@unlockOldMessages": {}, - "storeInAndroidKeystore": "Saugoti Android raktų saugykloje", - "@storeInAndroidKeystore": {}, - "indexedDbErrorTitle": "Privataus režimo problemos", - "@indexedDbErrorTitle": {}, - "noKeyForThisMessage": "Taip gali atsitikti, jei žinutė buvo išsiųsta prieš prisijungiant prie paskyros šiame prietaise.\n\nTaip pat gali būti, kad siuntėjas užblokavo jūsų prietaisą arba kažkas sutriko su interneto ryšiu.\n\nAr galite perskaityti žinutę kitoje sesijoje? Tada galite perkelti žinutę iš jos! Eikite į Nustatymai > Prietaisai ir įsitikinkite, kad jūsų prietaisai patvirtino vienas kitą. Kai kitą kartą atidarysite kambarį ir abi sesijos bus pirmame plane, raktai bus perduoti automatiškai.\n\nNenorite prarasti raktų atsijungdami arba keisdami įrenginius? Įsitikinkite, kad nustatymuose įjungėte pokalbių atsarginę kopiją.", - "@noKeyForThisMessage": {}, - "foregroundServiceRunning": "Šis pranešimas rodomas, kai veikia pirmojo plano paslauga.", - "@foregroundServiceRunning": {}, - "screenSharingTitle": "ekrano bendrinimas", - "@screenSharingTitle": {}, - "appearOnTopDetails": "Leidžia programėlę rodyti viršuje (nebūtina, jei jau esate nustatę Fluffychat kaip skambinimo paskyrą)", - "@appearOnTopDetails": {}, - "otherCallingPermissions": "Mikrofonas, kamera ir kiti FluffyChat leidimai", - "@otherCallingPermissions": {}, - "whyIsThisMessageEncrypted": "Kodėl ši žinutė neperskaitoma?", - "@whyIsThisMessageEncrypted": {}, - "newGroup": "Nauja grupė", - "@newGroup": {}, - "screenSharingDetail": "Bendrinate savo ekraną per FuffyChat", - "@screenSharingDetail": {}, - "numChats": "{number} pokalbiai", - "@numChats": { - "type": "number", - "placeholders": { - "number": {} - } - }, - "hideUnimportantStateEvents": "Slėpti nesvarbius būsenos įvykius", - "@hideUnimportantStateEvents": {}, - "@hugContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@jumpToLastReadMessage": {}, - "@allRooms": { - "type": "text", - "placeholders": {} - }, - "@commandHint_cuddle": {}, - "@reportErrorDescription": {}, - "@startFirstChat": {}, - "@setColorTheme": {}, - "@banUserDescription": {}, - "@removeDevicesDescription": {}, - "@tryAgain": {}, - "@unbanUserDescription": {}, - "@messagesStyle": {}, - "@newSpaceDescription": {}, - "@chatDescription": {}, - "@encryptThisChat": {}, - "@reopenChat": {}, - "@pushNotificationsNotAvailable": {}, - "@invalidServerName": {}, - "@chatPermissions": {}, - "@signInWithPassword": {}, - "@makeAdminDescription": {}, - "@setChatDescription": {}, - "@importFromZipFile": {}, - "@noOtherDevicesFound": {}, - "@redactedBy": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "@signInWith": { - "type": "text", - "placeholders": { - "provider": {} - } - }, - "@fileIsTooBigForServer": {}, - "@readUpToHere": {}, - "@optionalRedactReason": {}, - "@archiveRoomDescription": {}, - "@exportEmotePack": {}, - "@inviteContactToGroupQuestion": {}, - "@redactedByBecause": { - "type": "text", - "placeholders": { - "username": {}, - "reason": {} - } - }, - "@fileHasBeenSavedAt": { - "type": "text", - "placeholders": { - "path": {} - } - }, - "@redactMessageDescription": {}, - "@invalidInput": {}, - "@doNotShowAgain": {}, - "@report": {}, - "@googlyEyesContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@addChatDescription": {}, - "@hasKnocked": { - "placeholders": { - "user": {} - } - }, - "@openLinkInBrowser": {}, - "@disableEncryptionWarning": {}, - "@directChat": {}, - "@wrongPinEntered": { - "type": "text", - "placeholders": { - "seconds": {} - } - }, - "@sendTypingNotifications": {}, - "@inviteGroupChat": {}, - "@invitePrivateChat": {}, - "@importEmojis": {}, - "@wasDirectChatDisplayName": { - "type": "text", - "placeholders": { - "oldDisplayName": {} - } - }, - "@noChatDescriptionYet": {}, - "@learnMore": {}, - "@notAnImage": {}, - "@chatDescriptionHasBeenChanged": {}, - "@roomUpgradeDescription": {}, - "@pleaseEnterANumber": {}, - "@profileNotFound": {}, - "@jump": {}, - "@sorryThatsNotPossible": {}, - "@shareInviteLink": {}, - "@cuddleContent": { - "type": "text", - "placeholders": { - "senderName": {} - } - }, - "@deviceKeys": {}, - "@emoteKeyboardNoRecents": { - "type": "text", - "placeholders": {} - }, - "@setTheme": {}, - "@commandHint_hug": {}, - "@replace": {}, - "@commandHint_googly": {}, - "@pleaseTryAgainLaterOrChooseDifferentServer": {}, - "@createGroup": {}, - "@noBackupWarning": {}, - "@kickUserDescription": {}, - "@importNow": {}, - "@invite": {} -} \ No newline at end of file + "commandHint_leave": "Palikti pokalbių kambarį", + "@commandHint_leave": { + "type": "text", + "description": "Usage hint for the command /leave" + }, + "confirm": "Patvirtinti", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "cancel": "Atšaukti", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "edit": "Redaguoti", + "@edit": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Atsisiųsti failą", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "about": "Apie", + "@about": { + "type": "text", + "placeholders": {} + }, + "all": "Visi", + "@all": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "fileName": "Failo vardas", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "changePassword": "Keisti slaptažodį", + "@changePassword": { + "type": "text", + "placeholders": {} + }, + "close": "Uždaryti", + "@close": { + "type": "text", + "placeholders": {} + }, + "archive": "Archyvas", + "@archive": { + "type": "text", + "placeholders": {} + }, + "skip": "Praleisti", + "@skip": { + "type": "text", + "placeholders": {} + }, + "share": "Bendrinti", + "@share": { + "type": "text", + "placeholders": {} + }, + "showPassword": "Rodyti slaptažodį", + "@showPassword": { + "type": "text", + "placeholders": {} + }, + "time": "Laikas", + "@time": {}, + "settings": "Nustatytmai", + "@settings": { + "type": "text", + "placeholders": {} + }, + "sender": "Siuntėjas", + "@sender": {}, + "yes": "Taip", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Jūs", + "@you": { + "type": "text", + "placeholders": {} + }, + "logout": "Atsijungti", + "@logout": { + "type": "text", + "placeholders": {} + }, + "messages": "Žinutės", + "@messages": { + "type": "text", + "placeholders": {} + }, + "scanQrCode": "Nuskanuokite QR kodą", + "@scanQrCode": {}, + "ok": "OK", + "@ok": { + "type": "text", + "placeholders": {} + }, + "addAccount": "Pridėti paskyrą", + "@addAccount": {}, + "or": "Arba", + "@or": { + "type": "text", + "placeholders": {} + }, + "password": "Slaptažodis", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Slaptažodis pakeistas", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Įveskite savo slaptažodį", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Įveskite savo vartotojo vardą", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "reply": "Atsakyti", + "@reply": { + "type": "text", + "placeholders": {} + }, + "blockDevice": "Blokuoti įrenginį", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "blocked": "Užblokuotas", + "@blocked": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Pasirinkite saugų slaptažodį", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Ištrinti žinutę", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "device": "Įrenginys", + "@device": { + "type": "text", + "placeholders": {} + }, + "deviceId": "Įrenginio ID", + "@deviceId": { + "type": "text", + "placeholders": {} + }, + "devices": "Įrenginiai", + "@devices": { + "type": "text", + "placeholders": {} + }, + "homeserver": "Namų serveris", + "@homeserver": {}, + "enterYourHomeserver": "Įveskite namų serverį", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "everythingReady": "Viskas paruošta!", + "@everythingReady": { + "type": "text", + "placeholders": {} + }, + "fontSize": "Šrifto dydis", + "@fontSize": { + "type": "text", + "placeholders": {} + }, + "clearArchive": "Išvalyti archyvą", + "@clearArchive": {}, + "create": "Sukurti", + "@create": { + "type": "text", + "placeholders": {} + }, + "connect": "Prisijungti", + "@connect": { + "type": "text", + "placeholders": {} + }, + "people": "Žmonės", + "@people": { + "type": "text", + "placeholders": {} + }, + "moderator": "Moderatorius", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Nutildyti pokalbį", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "newChat": "Naujas pokalbis", + "@newChat": { + "type": "text", + "placeholders": {} + }, + "none": "Nė vienas", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Nėra leidimo", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Nerasta kambarių…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notifications": "Pranešimai", + "@notifications": { + "type": "text", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Pranešimai aktyvuoti šitai paskyrai", + "@notificationsEnabledForThisAccount": { + "type": "text", + "placeholders": {} + }, + "obtainingLocation": "Gaunama vieta…", + "@obtainingLocation": { + "type": "text", + "placeholders": {} + }, + "offensive": "Agresyvus", + "@offensive": { + "type": "text", + "placeholders": {} + }, + "offline": "Neprisijungta", + "@offline": { + "type": "text", + "placeholders": {} + }, + "online": "Prisijungta", + "@online": { + "type": "text", + "placeholders": {} + }, + "oopsPushError": "Oi! Deja, nustatant tiesioginius pranešimus įvyko klaida.", + "@oopsPushError": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oi, kažkas nutiko ne taip…", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Atidarykite programėlę, kad perskaityti žinutes", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "link": "Nuoroda", + "@link": {}, + "participant": "Dalyvis", + "@participant": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "Slapta frazė arba atkūrimo raktas", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "passwordForgotten": "Slaptažodis užmirštas", + "@passwordForgotten": { + "type": "text", + "placeholders": {} + }, + "passwordRecovery": "Slaptažodžio atkūrimas", + "@passwordRecovery": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Pasirinkite paveiksliuką", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Prisegti", + "@pin": { + "type": "text", + "placeholders": {} + }, + "pleaseChoose": "Prašome pasirinkti", + "@pleaseChoose": { + "type": "text", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Pasirinkite slaptą kodą", + "@pleaseChooseAPasscode": { + "type": "text", + "placeholders": {} + }, + "pleaseClickOnLink": "Paspauskite nuorodą el. pašte ir tęskite toliau.", + "@pleaseClickOnLink": { + "type": "text", + "placeholders": {} + }, + "pleaseEnter4Digits": "Įveskite 4 skaitmenis arba palikite tuščią, jei norite išjungti programėlės užraktą.", + "@pleaseEnter4Digits": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPin": "Įveskite savo PIN kodą", + "@pleaseEnterYourPin": { + "type": "text", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Vadovaukitės svetainėje pateiktais nurodymais ir bakstelėkite Toliau.", + "@pleaseFollowInstructionsOnWeb": { + "type": "text", + "placeholders": {} + }, + "privacy": "Privatumas", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Vieši kambariai", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "reason": "Priežastis", + "@reason": { + "type": "text", + "placeholders": {} + }, + "recording": "Įrašymas", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactMessage": "Pašalinti žinutę", + "@redactMessage": { + "type": "text", + "placeholders": {} + }, + "register": "Registruotis", + "@register": { + "type": "text", + "placeholders": {} + }, + "reject": "Atmesti", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejoin": "Vėl prisijungti", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Pašalinti", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Pašalinti visus kitus įrenginius", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removeDevice": "Pašalinti įrenginį", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeYourAvatar": "Pašalinti savo avatarą", + "@removeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Pakeisti kambarį naujesne versija", + "@replaceRoomWithNewerVersion": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Prašyti leidimo", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Kambarys buvo atnaujintas", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "roomVersion": "Kambario versija", + "@roomVersion": { + "type": "text", + "placeholders": {} + }, + "search": "Ieškoti", + "@search": { + "type": "text", + "placeholders": {} + }, + "accept": "Sutinku", + "@accept": { + "type": "text", + "placeholders": {} + }, + "repeatPassword": "Pakartokite slaptažodį", + "@repeatPassword": {}, + "addEmail": "Pridėti el. paštą", + "@addEmail": { + "type": "text", + "placeholders": {} + }, + "admin": "Administratorius", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "slapyvardis", + "@alias": { + "type": "text", + "placeholders": {} + }, + "allChats": "Visi pokalbiai", + "@allChats": { + "type": "text", + "placeholders": {} + }, + "anyoneCanJoin": "Bet kas gali prisijungti", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ar esate tikri?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ar tikrai norite atsijungti?", + "@areYouSureYouWantToLogout": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Pakeisti namų serverį", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Keisti savo stilių", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Keisti grupės pavadinimą", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeYourAvatar": "Keisti savo avatarą", + "@changeYourAvatar": { + "type": "text", + "placeholders": {} + }, + "chat": "Pokalbis", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Pokalbio detalės", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chats": "Pokalbiai", + "@chats": { + "type": "text", + "placeholders": {} + }, + "commandHint_ban": "Užblokuoti vartotoją šiame kambaryje", + "@commandHint_ban": { + "type": "text", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Išvalyti laikiną talpyklą", + "@commandHint_clearcache": { + "type": "text", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Atmesti sesiją", + "@commandHint_discardsession": { + "type": "text", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_html": "Siųsti tekstą HTML formatu", + "@commandHint_html": { + "type": "text", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Pakviesti vartotoją į šitą kambarį", + "@commandHint_invite": { + "type": "text", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Prisijungti prie nurodyto kambario", + "@commandHint_join": { + "type": "text", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Pašalinti vartotoja iš šito kambario", + "@commandHint_kick": { + "type": "text", + "description": "Usage hint for the command /kick" + }, + "commandHint_myroomnick": "Nustatyti savo rodomą vardą šiame kambaryje", + "@commandHint_myroomnick": { + "type": "text", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "Siųsti neformatuotą tekstą", + "@commandHint_plain": { + "type": "text", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "Siųsti tekstą", + "@commandHint_send": { + "type": "text", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Atblokuoti vartotoją šiame kambaryje", + "@commandHint_unban": { + "type": "text", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Neteisinga komanda", + "@commandInvalid": { + "type": "text" + }, + "configureChat": "Konfigūruoti pokalbį", + "@configureChat": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Nukopijuota į iškarpinę", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopijuoti", + "@copy": { + "type": "text", + "placeholders": {} + }, + "copyToClipboard": "Koipjuoti į iškarpinę", + "@copyToClipboard": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Šiuo metu aktyvus", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Tamsi", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "delete": "Ištrinti", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Panaikinti paskyra", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "directChats": "Tiesioginiai pokalbiai", + "@directChats": { + "type": "text", + "placeholders": {} + }, + "encrypted": "Užšifruotas", + "@encrypted": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Šifravimas aktyvuotas", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "enterAnEmailAddress": "Įveskite el. pašto adresą", + "@enterAnEmailAddress": { + "type": "text", + "placeholders": {} + }, + "extremeOffensive": "Itin įžeidžiantis", + "@extremeOffensive": { + "type": "text", + "placeholders": {} + }, + "forward": "Toliau", + "@forward": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "Nuo prisijungimo", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "Nuo pakvietimo", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "goToTheNewRoom": "Eiti į naują kambarį", + "@goToTheNewRoom": { + "type": "text", + "placeholders": {} + }, + "group": "Grupė", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Grupė yra vieša", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groups": "Grupės", + "@groups": { + "type": "text", + "placeholders": {} + }, + "guestsAreForbidden": "Svečiams draudžiama", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Svečiai gali prisijungti", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "help": "Pagalba", + "@help": { + "type": "text", + "placeholders": {} + }, + "hideRedactedEvents": "Slėpti pašalintus įvykius", + "@hideRedactedEvents": { + "type": "text", + "placeholders": {} + }, + "hideUnknownEvents": "Slėpti nežinomus įvykius", + "@hideUnknownEvents": { + "type": "text", + "placeholders": {} + }, + "identity": "Tapatybė", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignore": "Ignoruoti", + "@ignore": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Ignoruoti vartotojai", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "leave": "Palikti", + "@leave": { + "type": "text", + "placeholders": {} + }, + "memberChanges": "Narių pokyčiai", + "@memberChanges": { + "type": "text", + "placeholders": {} + }, + "mention": "Paminėti", + "@mention": { + "type": "text", + "placeholders": {} + }, + "encryption": "Šifravimas", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "enableEncryption": "Aktyvuoti šifravimą", + "@enableEncryption": { + "type": "text", + "placeholders": {} + }, + "editBlockedServers": "Redaguoti blokuotus serverius", + "@editBlockedServers": { + "type": "text", + "placeholders": {} + }, + "login": "Prisijungti", + "@login": { + "type": "text", + "placeholders": {} + }, + "sendOnEnter": "Išsiųsti paspaudus Enter", + "@sendOnEnter": {}, + "banFromChat": "Užblokuoti iš pokalbio", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Užblokuotas", + "@banned": { + "type": "text", + "placeholders": {} + }, + "changeDeviceName": "Pakeisti įrenginio vardą", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Jūsų pokalbio atsarginė kopija buvo nustatyta.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Pokalbio atsargine kopija", + "@chatBackup": { + "type": "text", + "placeholders": {} + }, + "commandHint_me": "Apibūdinkite save", + "@commandHint_me": { + "type": "text", + "description": "Usage hint for the command /me" + }, + "displaynameHasBeenChanged": "Rodomas vardas buvo pakeistas", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Redaguoti rodomą vardą", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editRoomAliases": "Redaguoti kambario pseudonimus", + "@editRoomAliases": { + "type": "text", + "placeholders": {} + }, + "editRoomAvatar": "Redaguoti kambario avatarą", + "@editRoomAvatar": { + "type": "text", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kiek įžeižiantis šis turinys?", + "@howOffensiveIsThisContent": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "iHaveClickedOnLink": "Aš paspaudžiau nuorodą", + "@iHaveClickedOnLink": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Neteisinga slaptafrazė arba atkūrimo raktas", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inoffensive": "Neįžeidžiantis", + "@inoffensive": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Pakviesti kontaktą", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "invited": "Pakviestas", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUsersOnly": "Tik pakviesti vartotojai", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "isTyping": "rašo…", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinRoom": "Prisijungti prie kambario", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "kickFromChat": "Išmesti iš pokalbio", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Paliko pokalbį", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licencija", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Šviesi", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadingPleaseWait": "Kraunama… Prašome palaukti.", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Rodyti daugiau…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nauja žinutė FluffyChat'e", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Nauja patvirtinimo užklausa!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "next": "Toliau", + "@next": { + "type": "text", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "text", + "placeholders": {} + }, + "noConnectionToTheServer": "Nėra ryšio su serveriu", + "@noConnectionToTheServer": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Nustatyti pakvietimo nuorodą", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "singlesignon": "Vienkartinis prisijungimas", + "@singlesignon": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Programinis kodas", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "spaceIsPublic": "Erdvė yra vieša", + "@spaceIsPublic": { + "type": "text", + "placeholders": {} + }, + "spaceName": "Erdvės pavadinimas", + "@spaceName": { + "type": "text", + "placeholders": {} + }, + "status": "Būsena", + "@status": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Kaip sekasi šiandien?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Pateikti", + "@submit": { + "type": "text", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sinchronizuojama… Prašome palaukti.", + "@synchronizingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "transferFromAnotherDevice": "Perkėlimas iš kito įrenginio", + "@transferFromAnotherDevice": { + "type": "text", + "placeholders": {} + }, + "verify": "Patvirtinti", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Pradėti patvirtinimą", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "Jūs sėkmingai patvirtinote!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Patvirtinama kita paskyra", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Pokalbių istorijos matomumas", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Matoma visiems dalyviams", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Laukiama, kol dalyvis priims užklausą…", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Rašyti žinutę…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Jūs nebedalyvaujate šiame pokalbyje", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Jums buvo uždrausta dalyvauti šiame pokalbyje", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "messageInfo": "Žinutės informacija", + "@messageInfo": {}, + "removeFromSpace": "Pašalinti iš erdvės", + "@removeFromSpace": {}, + "security": "Apsauga", + "@security": { + "type": "text", + "placeholders": {} + }, + "sendAsText": "Siųsti kaip tekstą", + "@sendAsText": { + "type": "text" + }, + "sendAudio": "Siųsti garso įrašą", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Siųsti paveiksliuką", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Sųsti bylą", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendMessages": "Siųsti žinutes", + "@sendMessages": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Siųsti originalą", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Siųsti video", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "separateChatTypes": "Atskirti tiesioginius pokalbius ir grupes", + "@separateChatTypes": { + "type": "text", + "placeholders": {} + }, + "setAsCanonicalAlias": "Nustatyti kaip pagrindinį slapyvardį", + "@setAsCanonicalAlias": { + "type": "text", + "placeholders": {} + }, + "setPermissionsLevel": "Nustatyti leidimų lygį", + "@setPermissionsLevel": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Nustatyti būseną", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "shareLocation": "Bendrinti vietą", + "@shareLocation": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "unavailable": "Nepasiekiamas", + "@unavailable": { + "type": "text", + "placeholders": {} + }, + "unblockDevice": "Atblokuoti įrenginį", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nežinomas šifravimo algoritmas", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Įjungti pokalbio garsą", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Atsegti", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "username": "Vartotojo vardas", + "@username": { + "type": "text", + "placeholders": {} + }, + "unverified": "Nepatvirtinta", + "@unverified": {}, + "verified": "Patvirtinta", + "@verified": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Vaizdo skambutis", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "yourPublicKey": "Jūsų viešasis raktas", + "@yourPublicKey": { + "type": "text", + "placeholders": {} + }, + "addToSpaceDescription": "Pasirinkite erdvę, kad prie jos pridėtumėte šį pokalbį.", + "@addToSpaceDescription": {}, + "start": "Pradžia", + "@start": {}, + "account": "Paskyra", + "@account": { + "type": "text", + "placeholders": {} + }, + "addToSpace": "Pridėti į erdvę", + "@addToSpace": {}, + "appLock": "Programos užraktas", + "@appLock": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ar svečiams leidžiama prisijungti", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "botMessages": "Botų žinutės", + "@botMessages": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifravimas buvo sugadintas", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Pokalbis buvo pridėtas prie šios erdvės", + "@chatHasBeenAddedToThisSpace": {}, + "compareEmojiMatch": "Palyginkite jaustukus", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Palyginkite skaičius", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontaktas buvo pakviestas į grupę", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentHasBeenReported": "Apie turinį pranešta serverio administratoriams", + "@contentHasBeenReported": { + "type": "text", + "placeholders": {} + }, + "createNewSpace": "Nauja erdvė", + "@createNewSpace": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Tai deaktyvuos jūsų vartotojo paskyrą. Tai negali būti atšaukta! Ar jūs tuo tikri?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "defaultPermissionLevel": "Numatytasis teisių lygis", + "@defaultPermissionLevel": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Šifravimo nebegalėsite išjungti. Ar jūs tuo tikri?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "send": "Siųsti", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Siųsti žinutę", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "toggleUnread": "Pažymėti kaip skaitytą/neskaitytą", + "@toggleUnread": { + "type": "text", + "placeholders": {} + }, + "tooManyRequestsWarning": "Per daug užklausų. Pabandykite dar kartą vėliau!", + "@tooManyRequestsWarning": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Laukiama, kol dalyvis priims jaustukus…", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Laukiama, kol dalyvis priims skaičius…", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Užsklanda", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "Įspėjimas!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "weSentYouAnEmail": "Išsiuntėme jums el. laišką", + "@weSentYouAnEmail": { + "type": "text", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kas gali atlikti kokį veiksmą", + "@whoCanPerformWhichAction": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kam leidžiama prisijungti prie šios grupės", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kodėl norite apie tai pranešti?", + "@whyDoYouWantToReportThis": { + "type": "text", + "placeholders": {} + }, + "wipeChatBackup": "Ištrinti atsarginę pokalbių kopiją, kad sukurti naują atkūrimo raktą?", + "@wipeChatBackup": { + "type": "text", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Naudodami šiuos adresus galite atkurti savo slaptažodį.", + "@withTheseAddressesRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "messageType": "Žinutės tipas", + "@messageType": {}, + "openGallery": "Atverti galeriją", + "@openGallery": {}, + "unknownDevice": "Nežinomas įrenginys", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Balso žinutė", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Matoma visiems", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Pabandykite išsiųsti dar kartą", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Vietos leidimas atmestas. Suteikite leidimą kad galėtumėte bendrinti savo vietą.", + "@locationPermissionDeniedNotice": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Atminkite, kad norint naudoti end-to-end šifravimą, reikalingas Pantalaimon.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Šifravimą galite suaktyvinti tik tada, kai kambarys nebebus viešai pasiekiamas.", + "@noEncryptionForPublicRooms": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Nerasta jaustukų. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Atrodo, kad jūsų telefone nėra Google Services. Tai geras sprendimas jūsų privatumui! Norėdami gauti tiesioginius pranešimus FluffyChat, rekomenduojame naudoti https://microg.org/ arba https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Dar nepridėjote slaptažodžio atkūrimo būdo.", + "@noPasswordRecoveryDescription": { + "type": "text", + "placeholders": {} + }, + "oneClientLoggedOut": "Vienas iš jūsų klientų atsijungė", + "@oneClientLoggedOut": {}, + "onlineKeyBackupEnabled": "Internetinė atsarginė raktų kopija įjungta", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Atidarykite kamerą", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "openVideoCamera": "Atidarykite kamerą vaizdo įrašui", + "@openVideoCamera": { + "type": "text", + "placeholders": {} + }, + "editBundlesForAccount": "Redaguoti šios paskyros paketus", + "@editBundlesForAccount": {}, + "serverRequiresEmail": "Šis serveris turi patvirtinti jūsų el. pašto adresą registracijai.", + "@serverRequiresEmail": {}, + "addToBundle": "Pridėti prie paketų", + "@addToBundle": {}, + "removeFromBundle": "Pašalinkite iš šio paketo", + "@removeFromBundle": {}, + "bundleName": "Paketo vardas", + "@bundleName": {}, + "play": "Groti {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "redactedAnEvent": "{username} pašalino įvykį", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejectedTheInvitation": "{username} atmetė kvietimą", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removedBy": "Pašalino vartotojas {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "unbanFromChat": "Atblokuoti pokalbyje", + "@unbanFromChat": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Atvaizduoti turtingą žinutės turinį", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reportMessage": "Pranešti apie žinutę", + "@reportMessage": { + "type": "text", + "placeholders": {} + }, + "saveFile": "Išsaugoti failą", + "@saveFile": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Matė {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sendSticker": "Siųsti lipduką", + "@sendSticker": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "📁 {username} atsiuntė failą", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "🎤 {username} atsiuntė garso įrašą", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "😊 {username} atsiuntė lipduką", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sharedTheLocation": "{username} bendrino savo vietą", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "startedACall": "{senderName} pradėjo skambutį", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "theyDontMatch": "Jie nesutampa", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Jie sutampa", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} atblokavo {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unknownEvent": "Nežinomas įvykis '{type}'", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "userAndOthersAreTyping": "{username} ir dar {count} kiti rašo…", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} ir {username2} rašo…", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} rašo…", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userSentUnknownEvent": "{username} išsiuntė {type} įvykį", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "publish": "Paskelbti", + "@publish": {}, + "openChat": "Atverti pokalbį", + "@openChat": {}, + "reportUser": "Pranešti apie vartotoją", + "@reportUser": {}, + "dismiss": "Atsisakyti", + "@dismiss": {}, + "reactedWith": "{sender} sureagavo su {reaction}", + "@reactedWith": { + "type": "text", + "placeholders": { + "sender": {}, + "reaction": {} + } + }, + "unsupportedAndroidVersion": "Nepalaikoma Android versija", + "@unsupportedAndroidVersion": {}, + "emailOrUsername": "El. paštas arba vartotojo vardas", + "@emailOrUsername": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetNameError": "Pateikite rodomą vardą.", + "@widgetNameError": {}, + "acceptedTheInvitation": "👍 {username} priėmė kvietimą", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "activatedEndToEndEncryption": "🔐 {username} aktyvavo visapusį šifravimą", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "answeredTheCall": "{senderName} atsiliepė į skambutį", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "askVerificationRequest": "Priimti šią patvirtinimo užklausą iš {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "badServerLoginTypesException": "Namų serveris palaiko šiuos prisijungimo tipus:\n{serverVersions}\nTačiau ši programa palaiko tik:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "badServerVersionsException": "Namų serveris palaiko spec. versijas:\n{serverVersions}\nTačiau ši programa palaiko tik {supportedVersions}", + "@badServerVersionsException": { + "type": "text", + "placeholders": { + "serverVersions": {}, + "supportedVersions": {} + } + }, + "bannedUser": "{username} užblokavo {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "changedTheHistoryVisibility": "{username} pakeitė istorijos matomumą", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} pakeitė istorijos matomumą į: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "chatBackupDescription": "Jūsų senos žinutės yra apsaugotos atkūrimo raktu. Pasirūpinkite, kad jo neprarastumėte.", + "@chatBackupDescription": { + "type": "text", + "placeholders": {} + }, + "commandHint_create": "Sukurti tuščią grupinį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", + "@commandHint_create": { + "type": "text", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Pradėti tiesioginį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", + "@commandHint_dm": { + "type": "text", + "description": "Usage hint for the command /dm" + }, + "commandHint_myroomavatar": "Nustatyti savo nuotrauką šiame kambaryje (su mxc-uri)", + "@commandHint_myroomavatar": { + "type": "text", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_op": "Nustatyti naudotojo galios lygį (numatytasis: 50)", + "@commandHint_op": { + "type": "text", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Siųsti atsakymą kaip reakciją", + "@commandHint_react": { + "type": "text", + "description": "Usage hint for the command /react" + }, + "commandMissing": "{command} nėra komanda.", + "@commandMissing": { + "type": "text", + "placeholders": { + "command": {} + }, + "description": "State that {command} is not a valid /command." + }, + "containsDisplayName": "Turi rodomą vardą", + "@containsDisplayName": { + "type": "text", + "placeholders": {} + }, + "containsUserName": "Turi vartotojo vardą", + "@containsUserName": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nepavyko iššifruoti pranešimo: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "countParticipants": "{count} dalyviai", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "createdTheChat": "💬 {username} sukūrė pokalbį", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "emptyChat": "Tuščias pokalbis", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Jaustukas jau egzistuoja!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Neteisingas jaustuko trumpasis kodas!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Jaustukų paketai kambariui", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Jaustukų nustatymai", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Jaustuko trumpasis kodas", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Turite pasirinkti jaustuko trumpąjį kodą ir paveiksliuką!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Įgalinti jaustukų paketą visur", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} baigė skambutį", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "errorObtainingLocation": "Klaida nustatant vietą: {error}", + "@errorObtainingLocation": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "groupWith": "Grupė su {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "hasWithdrawnTheInvitationFor": "{username} atšaukė {targetName} kvietimą", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "inviteForMe": "Pakvietimas man", + "@inviteForMe": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Pakviesti kontaktą į {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invitedUser": "📩 {username} pakvietė {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "inviteText": "{username} pakvietė jus prisijungti prie FluffyChat. \n1. Įdiekite FluffyChat: https://fluffychat.im \n2. Prisiregistruokite arba prisijunkite \n3. Atidarykite pakvietimo nuorodą: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "joinedTheChat": "👋 {username} prisijungė prie pokalbio", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "kicked": "👞 {username} išmetė {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "🙅 {username} išmetė ir užblokavo {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "lastActiveAgo": "Paskutinis aktyvumas: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "loadCountMoreParticipants": "Įkelti dar {count} dalyvius", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "logInTo": "Prisijungti prie {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "toggleFavorite": "Perjungti parankinius", + "@toggleFavorite": { + "type": "text", + "placeholders": {} + }, + "toggleMuted": "Perjungti nutildytą", + "@toggleMuted": { + "type": "text", + "placeholders": {} + }, + "cantOpenUri": "Nepavyksta atidaryti URI {uri}", + "@cantOpenUri": { + "type": "text", + "placeholders": { + "uri": {} + } + }, + "changedTheChatAvatar": "{username} pakeitė pokalbio avatarą", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} pakeitė pokalbio aprašymą į: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} pakeitė pokalbio pavadinimą į: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} pakeitė pokalbių leidimus", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} pakeitė rodomą vardą į: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} pakeitė svečio prieigos taisykles", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} pakeitė svečio prieigos taisykles į: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} pakeitė prisijungimo taisykles", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} pakeitė prisijungimo taisykles į: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} pakeitė savo avatarą", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} pakeitė kambario pseudonimus", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} pakeitė pakvietimo nuorodą", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "videoWithSize": "Vaizdo įrašas ({size})", + "@videoWithSize": { + "type": "text", + "placeholders": { + "size": {} + } + }, + "pinMessage": "Prisegti prie kambario", + "@pinMessage": {}, + "confirmEventUnpin": "Ar tikrai norite visam laikui atsegti įvykį?", + "@confirmEventUnpin": {}, + "emojis": "Jaustukai", + "@emojis": {}, + "placeCall": "Skambinti", + "@placeCall": {}, + "voiceCall": "Balso skambutis", + "@voiceCall": {}, + "unsupportedAndroidVersionLong": "Šiai funkcijai reikalinga naujesnė Android versija. Patikrinkite, ar nėra naujinimų arba Lineage OS palaikymo.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Atminkite, kad vaizdo skambučiai šiuo metu yra beta versijos. Jie gali neveikti taip kaip tikėtasi, arba iš viso neveikti visose platformose.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Eksperimentiniai vaizdo skambučiai", + "@experimentalVideoCalls": {}, + "switchToAccount": "Perjungti paskyrą į {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "nextAccount": "Kita paskyra", + "@nextAccount": {}, + "previousAccount": "Ankstesnė paskyra", + "@previousAccount": {}, + "widgetEtherpad": "Teksto pastaba", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetName": "Vardas", + "@widgetName": {}, + "widgetUrlError": "Netinkamas URL.", + "@widgetUrlError": {}, + "youRejectedTheInvitation": "Jūs atmetėte kvietimą", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Jūs prisijungėte prie pokalbio", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Jūs priėmėte kvietimą", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Jūs užblokavote {user}", + "@youBannedUser": { + "placeholders": { + "user": {} + } + }, + "youHaveWithdrawnTheInvitationFor": "Jūs atšaukėte kvietimą {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": {} + } + }, + "youInvitedBy": "📩 Jus pakvietė {user}", + "@youInvitedBy": { + "placeholders": { + "user": {} + } + }, + "youKicked": "👞 Jūs išmetėte {user}", + "@youKicked": { + "placeholders": { + "user": {} + } + }, + "youInvitedUser": "📩 Pakvietėte {user}", + "@youInvitedUser": { + "placeholders": { + "user": {} + } + }, + "youKickedAndBanned": "🙅 Jūs išmetėte ir užblokavote {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": {} + } + }, + "youUnbannedUser": "Jūs atblokavote {user}", + "@youUnbannedUser": { + "placeholders": { + "user": {} + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "locationDisabledNotice": "Vietos nustatymo paslaugos yra išjungtos. Kad galėtumėte bendrinti savo buvimo vietą, įjunkite jas.", + "@locationDisabledNotice": { + "type": "text", + "placeholders": {} + }, + "noMatrixServer": "{server1} nėra Matrix serveris, ar vietoj jo naudoti {server2}?", + "@noMatrixServer": { + "type": "text", + "placeholders": { + "server1": {}, + "server2": {} + } + }, + "numUsersTyping": "{count} vartotojai rašo…", + "@numUsersTyping": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "enableMultiAccounts": "(BETA) Įgalinkite kelias paskyras šiame įrenginyje", + "@enableMultiAccounts": {}, + "openInMaps": "Atidaryti žemėlapiuose", + "@openInMaps": { + "type": "text", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} atsiuntė nuotrauką", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "🎥 {username} atsiuntė vaizdo įrašą", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} išsiuntė skambučio informaciją", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "setCustomEmotes": "Nustatyti pasirinktinius jaustukus", + "@setCustomEmotes": { + "type": "text", + "placeholders": {} + }, + "userLeftTheChat": "🚪 {username} paliko pokalbį", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "markAsRead": "Žymėti kaip skaitytą", + "@markAsRead": {}, + "pushRules": "Tiesioginių pranešimų taisyklės", + "@pushRules": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} neperskaityti pokalbiai}}", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "addWidget": "Pridėti programėlę", + "@addWidget": {}, + "widgetCustom": "Pasirinktinis", + "@widgetCustom": {}, + "errorAddingWidget": "Pridedant valdiklį įvyko klaida.", + "@errorAddingWidget": {}, + "askSSSSSign": "Kad galėtumėte prijungti kitą asmenį, įveskite savo saugyklos slaptafrazę arba atkūrimo raktą.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "autoplayImages": "Automatiškai leisti animuotus lipdukus ir jaustukus", + "@autoplayImages": { + "type": "text", + "placeholder": {} + }, + "commandHint_markasdm": "Pažymėti kaip tiesioginio pokalbio kambarį", + "@commandHint_markasdm": {}, + "dehydrateTorLong": "TOR naudotojams rekomenduojama eksportuoti sesiją prieš uždarant langą.", + "@dehydrateTorLong": {}, + "dehydrateWarning": "Šio veiksmo negalima atšaukti. Įsitikinkite, kad saugiai saugote atsarginę kopiją.", + "@dehydrateWarning": {}, + "hydrateTorLong": "Ar paskutinį kartą eksportavote savo sesiją naudodami TOR? Greitai ją importuokite ir tęskite pokalbį.", + "@hydrateTorLong": {}, + "commandHint_markasgroup": "Pažymėti kaip grupę", + "@commandHint_markasgroup": {}, + "pleaseEnterRecoveryKeyDescription": "Norėdami atrakinti senas žinutes, įveskite atkūrimo raktą, kuris buvo sukurtas ankstesnės sesijos metu. Atkūrimo raktas NĖRA jūsų slaptažodis.", + "@pleaseEnterRecoveryKeyDescription": {}, + "callingPermissions": "Skambinimo leidimai", + "@callingPermissions": {}, + "storeInAppleKeyChain": "Saugoti Apple raktų grandinėje", + "@storeInAppleKeyChain": {}, + "callingAccount": "Skambinimo paskyra", + "@callingAccount": {}, + "newSpace": "Nauja erdvė", + "@newSpace": {}, + "callingAccountDetails": "Leidžia FluffyChat naudoti vietinę Android rinkiklio programą.", + "@callingAccountDetails": {}, + "appearOnTop": "Rodyti viršuje", + "@appearOnTop": {}, + "enterSpace": "Įeiti į erdvę", + "@enterSpace": {}, + "enterRoom": "Įeiti į kambarį", + "@enterRoom": {}, + "allSpaces": "Visos erdvės", + "@allSpaces": {}, + "user": "Vartotojas", + "@user": {}, + "custom": "Pasirinktinis", + "@custom": {}, + "confirmMatrixId": "Norėdami ištrinti savo paskyrą, patvirtinkite savo Matrix ID.", + "@confirmMatrixId": {}, + "supposedMxid": "Tai turėtų būti {mxid}", + "@supposedMxid": { + "type": "text", + "placeholders": { + "mxid": {} + } + }, + "dehydrate": "Eksportuoti sesiją ir išvalyti įrenginį", + "@dehydrate": {}, + "dehydrateTor": "TOR Naudotojai: Eksportuoti sesiją", + "@dehydrateTor": {}, + "hydrateTor": "TOR Naudotojai: Importuoti sesijos eksportą", + "@hydrateTor": {}, + "hydrate": "Atkurti iš atsarginės kopijos failo", + "@hydrate": {}, + "pleaseEnterRecoveryKey": "Įveskite savo atkūrimo raktą:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Atkūrimo raktas", + "@recoveryKey": {}, + "recoveryKeyLost": "Pamestas atkūrimo raktas?", + "@recoveryKeyLost": {}, + "indexedDbErrorLong": "Deja, pagal numatytuosius nustatymus žinučių saugojimas privačiame režime nėra įjungtas.\nPrašome apsilankyti\n - about:config\n - nustatykite dom.indexedDB.privateBrowsing.enabled į true\nPriešingu atveju FluffyChat paleisti neįmanoma.", + "@indexedDbErrorLong": {}, + "countFiles": "{count} failai", + "@countFiles": { + "placeholders": { + "count": {} + } + }, + "storeInSecureStorageDescription": "Atkūrimo raktą laikyti saugioje šio prietaiso saugykloje.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Įrašykite šį raktą rankiniu būdu, įjungę sistemos bendrinimo dialogo langą arba iškarpinę.", + "@saveKeyManuallyDescription": {}, + "users": "Vartotojai", + "@users": {}, + "storeSecurlyOnThisDevice": "Saugiai laikyti šiame prietaise", + "@storeSecurlyOnThisDevice": {}, + "unlockOldMessages": "Atrakinti senas žinutes", + "@unlockOldMessages": {}, + "storeInAndroidKeystore": "Saugoti Android raktų saugykloje", + "@storeInAndroidKeystore": {}, + "indexedDbErrorTitle": "Privataus režimo problemos", + "@indexedDbErrorTitle": {}, + "noKeyForThisMessage": "Taip gali atsitikti, jei žinutė buvo išsiųsta prieš prisijungiant prie paskyros šiame prietaise.\n\nTaip pat gali būti, kad siuntėjas užblokavo jūsų prietaisą arba kažkas sutriko su interneto ryšiu.\n\nAr galite perskaityti žinutę kitoje sesijoje? Tada galite perkelti žinutę iš jos! Eikite į Nustatymai > Prietaisai ir įsitikinkite, kad jūsų prietaisai patvirtino vienas kitą. Kai kitą kartą atidarysite kambarį ir abi sesijos bus pirmame plane, raktai bus perduoti automatiškai.\n\nNenorite prarasti raktų atsijungdami arba keisdami įrenginius? Įsitikinkite, kad nustatymuose įjungėte pokalbių atsarginę kopiją.", + "@noKeyForThisMessage": {}, + "foregroundServiceRunning": "Šis pranešimas rodomas, kai veikia pirmojo plano paslauga.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "ekrano bendrinimas", + "@screenSharingTitle": {}, + "appearOnTopDetails": "Leidžia programėlę rodyti viršuje (nebūtina, jei jau esate nustatę Fluffychat kaip skambinimo paskyrą)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Mikrofonas, kamera ir kiti FluffyChat leidimai", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Kodėl ši žinutė neperskaitoma?", + "@whyIsThisMessageEncrypted": {}, + "newGroup": "Nauja grupė", + "@newGroup": {}, + "screenSharingDetail": "Bendrinate savo ekraną per FuffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} pokalbiai", + "@numChats": { + "type": "number", + "placeholders": { + "number": {} + } + }, + "hideUnimportantStateEvents": "Slėpti nesvarbius būsenos įvykius", + "@hideUnimportantStateEvents": {} +} From 434ef60b48e4067309c20c0045506bfda349ba10 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Thu, 25 Jul 2024 15:49:12 +0000 Subject: [PATCH 075/106] Translated using Weblate (Arabic) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ar/ --- assets/l10n/intl_ar.arb | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_ar.arb b/assets/l10n/intl_ar.arb index 6a27bd68d..c3fbde038 100644 --- a/assets/l10n/intl_ar.arb +++ b/assets/l10n/intl_ar.arb @@ -1821,7 +1821,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "مستوى الأذونات الإفتراضي", + "defaultPermissionLevel": "مستوى الأذونات الافتراضية للمستخدمين الجدد", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2737,5 +2737,40 @@ "@goToSpace": { "type": "text", "space": {} - } + }, + "userLevel": "{level} - مستخدم", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - مشرف", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - مدير", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeGeneralChatSettings": "تغيير إعدادات الدردشة العامة", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "دعوة مستخدمين آخرين إلى هذه الدردشة", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "تغيير أذونات الدردشة", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "تغيير رؤية سجل الدردشة", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "تغيير عنوان الدردشة العامة الرئيسي", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "إرسال إشعارات @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "تغيير وصف الدردشة", + "@changeTheDescriptionOfTheGroup": {} } From 6c396ec68273668f79c9af343880f8c047f7a843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 25 Jul 2024 10:40:52 +0000 Subject: [PATCH 076/106] Translated using Weblate (Estonian) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/ --- assets/l10n/intl_et.arb | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_et.arb b/assets/l10n/intl_et.arb index d19c823c3..c94ad9938 100644 --- a/assets/l10n/intl_et.arb +++ b/assets/l10n/intl_et.arb @@ -559,7 +559,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "Vaikimisi õigused", + "defaultPermissionLevel": "Vaikimisi õigused uutele kasutajatele", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2737,5 +2737,40 @@ "chats": {}, "participants": {} } - } + }, + "userLevel": "{level} - kasutaja", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - moderaator", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - peakasutaja", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeTheVisibilityOfChatHistory": "Muuda vestluse ajaloo nähtavust", + "@changeTheVisibilityOfChatHistory": {}, + "sendRoomNotifications": "Saada @jututuba teavitusi", + "@sendRoomNotifications": {}, + "changeTheCanonicalRoomAlias": "Muuda vestluse põhilist avalikult nähtavat aadressi", + "@changeTheCanonicalRoomAlias": {}, + "changeGeneralChatSettings": "Muuda vestluse üldiseid seadistusi", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Kutsu teisi osalejaid sellesse vestlusesse", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Muuda vestluse õigusi", + "@changeTheChatPermissions": {}, + "changeTheDescriptionOfTheGroup": "Muuda vestluse kirjeldust", + "@changeTheDescriptionOfTheGroup": {} } From 7f6ff69d0bd12408c536800a37ed220ed62e81e1 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Thu, 25 Jul 2024 10:50:56 +0000 Subject: [PATCH 077/106] Translated using Weblate (Basque) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/eu/ --- assets/l10n/intl_eu.arb | 43 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/assets/l10n/intl_eu.arb b/assets/l10n/intl_eu.arb index 6f72715e2..d810bcc95 100644 --- a/assets/l10n/intl_eu.arb +++ b/assets/l10n/intl_eu.arb @@ -1560,7 +1560,7 @@ "type": "text", "placeholders": {} }, - "contentHasBeenReported": "Edukia zerbitzariko administrariei jakinarazi zaie", + "contentHasBeenReported": "Edukia zerbitzariko administratzaileei jakinarazi zaie", "@contentHasBeenReported": { "type": "text", "placeholders": {} @@ -1781,7 +1781,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "Defektuzko botere-maila", + "defaultPermissionLevel": "Erabiltzaile berrien defektuzko botere-maila", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2357,7 +2357,7 @@ }, "redactMessageDescription": "Mezua elkarrizketa honetako partaide guztientzat botako da atzera. Ezin da desegin.", "@redactMessageDescription": {}, - "addChatDescription": "Gehitu txat honen deskribapena…", + "addChatDescription": "Gehitu txataren deskribapena…", "@addChatDescription": {}, "directChat": "Banakako txata", "@directChat": {}, @@ -2737,5 +2737,40 @@ } }, "spaces": "Guneak", - "@spaces": {} + "@spaces": {}, + "adminLevel": "{level} - Administratzailea", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeTheChatPermissions": "Aldatu txataren baimenak", + "@changeTheChatPermissions": {}, + "inviteOtherUsers": "Gonbidatu beste erabiltzaileak txat honetara", + "@inviteOtherUsers": {}, + "userLevel": "{level} - Erabiltzailea", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - Moderatzailea", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "sendRoomNotifications": "Bidali @gela jakinarazpena", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Aldatu txataren deskribapena", + "@changeTheDescriptionOfTheGroup": {}, + "changeGeneralChatSettings": "Aldatu txataren ezarpen orokorrak", + "@changeGeneralChatSettings": {}, + "changeTheVisibilityOfChatHistory": "Aldatu txataren historiaren ikusgaitasuna", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Aldatu txataren helbide publiko nagusia", + "@changeTheCanonicalRoomAlias": {} } From 9a7dcbfbfb759f7b1bf0a8b57ccda4d2fb12af31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Fri, 26 Jul 2024 04:58:04 +0000 Subject: [PATCH 078/106] Translated using Weblate (Galician) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/gl/ --- assets/l10n/intl_gl.arb | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_gl.arb b/assets/l10n/intl_gl.arb index eefbbeaf9..94f76ff12 100644 --- a/assets/l10n/intl_gl.arb +++ b/assets/l10n/intl_gl.arb @@ -559,7 +559,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "Nivel de permisos por omisión", + "defaultPermissionLevel": "Nivel de permisos por defecto para novas usuarias", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2737,5 +2737,40 @@ "space": {} }, "markAsUnread": "Marcar como non lido", - "@markAsUnread": {} + "@markAsUnread": {}, + "userLevel": "{level} - Usuaria", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - Moderadora", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - Administradora", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeGeneralChatSettings": "Cambiar os axustes xerais do chat", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Convidar a outras usuarias a este chat", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Cambiar os permisos no chat", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Cambiar a visibilidade do historial do chat", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Cambiar o enderezo público principal do chat", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Enviar notificacións a @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Cambiar a descrición do chat", + "@changeTheDescriptionOfTheGroup": {} } From 22b91c61f0f2d6657573e0ac5d5a2adb1ee2bbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Thu, 25 Jul 2024 17:16:28 +0000 Subject: [PATCH 079/106] Translated using Weblate (Turkish) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/tr/ --- assets/l10n/intl_tr.arb | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_tr.arb b/assets/l10n/intl_tr.arb index c61face7f..a0bf35457 100644 --- a/assets/l10n/intl_tr.arb +++ b/assets/l10n/intl_tr.arb @@ -563,7 +563,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "Öntanımlı izin seviyesi", + "defaultPermissionLevel": "Yeni kullanıcılar içi öntanımlı izin seviyesi", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2737,5 +2737,40 @@ "space": "Alan", "@space": {}, "spaces": "Alanlar", - "@spaces": {} + "@spaces": {}, + "inviteOtherUsers": "Diğer kullanıcıları bu sohbete davet et", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Sohbet izinlerini değiştir", + "@changeTheChatPermissions": {}, + "changeTheCanonicalRoomAlias": "Ana herkese açık sohbet adresini değiştir", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "@oda bildirimleri gönder", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Sohbetin açıklamasını değiştir", + "@changeTheDescriptionOfTheGroup": {}, + "userLevel": "{level} - Kullanıcı", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - Moderatör", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - Yönetici", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "changeGeneralChatSettings": "Genel sohbet ayarlarını değiştir", + "@changeGeneralChatSettings": {}, + "changeTheVisibilityOfChatHistory": "Sohbet geçmişinin görünürlüğünü değiştir", + "@changeTheVisibilityOfChatHistory": {} } From 4dcd2dac7cac863ff0d3cec4e552c5a24c9ada9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?= =?UTF-8?q?=E5=B1=B1?= Date: Fri, 26 Jul 2024 01:09:53 +0000 Subject: [PATCH 080/106] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (652 of 652 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hans/ --- assets/l10n/intl_zh.arb | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_zh.arb b/assets/l10n/intl_zh.arb index ad8992245..67b1e96aa 100644 --- a/assets/l10n/intl_zh.arb +++ b/assets/l10n/intl_zh.arb @@ -537,7 +537,7 @@ "type": "text", "placeholders": {} }, - "defaultPermissionLevel": "默认权限级别", + "defaultPermissionLevel": "新用户默认权限级别", "@defaultPermissionLevel": { "type": "text", "placeholders": {} @@ -2737,5 +2737,40 @@ } }, "unread": "未读", - "@unread": {} + "@unread": {}, + "userLevel": "{level} - 用户", + "@userLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "moderatorLevel": "{level} - 主持人", + "@moderatorLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "adminLevel": "{level} - 管理员", + "@adminLevel": { + "type": "text", + "placeholders": { + "level": {} + } + }, + "inviteOtherUsers": "邀请其他用户到这个聊天", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "更改聊天权限", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "更改聊天历史的可见性", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "更改主公共聊天地址", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "发送通知聊天室所有人的通知", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "更改聊天描述", + "@changeTheDescriptionOfTheGroup": {}, + "changeGeneralChatSettings": "更改常规聊天设置", + "@changeGeneralChatSettings": {} } From 16cf4e5e6c85381974f24359a037cee5a4871746 Mon Sep 17 00:00:00 2001 From: Krille Date: Fri, 26 Jul 2024 14:52:41 +0200 Subject: [PATCH 081/106] refactor: Design polishment and better user viewer --- lib/pages/chat_details/chat_details_view.dart | 54 +++------ lib/pages/new_group/new_group_view.dart | 4 - lib/pages/new_space/new_space_view.dart | 4 - lib/pages/settings/settings_view.dart | 61 +++------- .../settings_3pid/settings_3pid_view.dart | 2 +- .../settings_chat/settings_chat_view.dart | 10 +- .../settings_emotes/settings_emotes_view.dart | 2 +- .../settings_security_view.dart | 1 - .../settings_style/settings_style_view.dart | 3 - .../user_bottom_sheet/user_bottom_sheet.dart | 39 +++++++ .../user_bottom_sheet_view.dart | 106 ++++++++++-------- 11 files changed, 134 insertions(+), 152 deletions(-) diff --git a/lib/pages/chat_details/chat_details_view.dart b/lib/pages/chat_details/chat_details_view.dart index 4e19e43ca..3c17112a5 100644 --- a/lib/pages/chat_details/chat_details_view.dart +++ b/lib/pages/chat_details/chat_details_view.dart @@ -85,33 +85,16 @@ class ChatDetailsView extends StatelessWidget { padding: const EdgeInsets.all(32.0), child: Stack( children: [ - Material( - elevation: Theme.of(context) - .appBarTheme - .scrolledUnderElevation ?? - 4, - shadowColor: Theme.of(context) - .appBarTheme - .shadowColor, - shape: RoundedRectangleBorder( - side: BorderSide( - color: Theme.of(context).dividerColor, - ), - borderRadius: BorderRadius.circular( - Avatar.defaultSize * 2.5, - ), - ), - child: Hero( - tag: controller - .widget.embeddedCloseButton != - null - ? 'embedded_content_banner' - : 'content_banner', - child: Avatar( - mxContent: room.avatar, - name: displayname, - size: Avatar.defaultSize * 2.5, - ), + Hero( + tag: + controller.widget.embeddedCloseButton != + null + ? 'embedded_content_banner' + : 'content_banner', + child: Avatar( + mxContent: room.avatar, + name: displayname, + size: Avatar.defaultSize * 2.5, ), ), if (!room.isDirectChat && @@ -170,7 +153,7 @@ class ChatDetailsView extends StatelessWidget { : displayname, maxLines: 1, overflow: TextOverflow.ellipsis, - // style: const TextStyle(fontSize: 18), + style: const TextStyle(fontSize: 18), ), ), TextButton.icon( @@ -202,10 +185,7 @@ class ChatDetailsView extends StatelessWidget { ), ], ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), if (!room.canChangeStateEvent(EventTypes.RoomTopic)) ListTile( title: Text( @@ -261,10 +241,7 @@ class ChatDetailsView extends StatelessWidget { ), ), const SizedBox(height: 16), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), ListTile( leading: CircleAvatar( backgroundColor: @@ -316,10 +293,7 @@ class ChatDetailsView extends StatelessWidget { onTap: () => context .push('/rooms/${room.id}/details/permissions'), ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), ListTile( title: Text( L10n.of(context)!.countParticipants( diff --git a/lib/pages/new_group/new_group_view.dart b/lib/pages/new_group/new_group_view.dart index a83497d7b..df2a4ac49 100644 --- a/lib/pages/new_group/new_group_view.dart +++ b/lib/pages/new_group/new_group_view.dart @@ -102,10 +102,6 @@ class NewGroupView extends StatelessWidget { child: SizedBox( width: double.infinity, child: ElevatedButton( - style: ElevatedButton.styleFrom( - foregroundColor: Theme.of(context).colorScheme.onPrimary, - backgroundColor: Theme.of(context).colorScheme.primary, - ), onPressed: controller.loading ? null : controller.submitAction, child: controller.loading diff --git a/lib/pages/new_space/new_space_view.dart b/lib/pages/new_space/new_space_view.dart index e90c7a84e..2f46e5e73 100644 --- a/lib/pages/new_space/new_space_view.dart +++ b/lib/pages/new_space/new_space_view.dart @@ -74,10 +74,6 @@ class NewSpaceView extends StatelessWidget { child: SizedBox( width: double.infinity, child: ElevatedButton( - style: ElevatedButton.styleFrom( - foregroundColor: Theme.of(context).colorScheme.onPrimary, - backgroundColor: Theme.of(context).colorScheme.primary, - ), onPressed: controller.loading ? null : controller.submitAction, child: controller.loading diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index b1d60f142..b2293f4b2 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -28,13 +28,6 @@ class SettingsView extends StatelessWidget { ), ), title: Text(L10n.of(context)!.settings), - actions: [ - TextButton.icon( - onPressed: controller.logoutAction, - label: Text(L10n.of(context)!.logout), - icon: const Icon(Icons.logout_outlined), - ), - ], ), body: ListTileTheme( iconColor: Theme.of(context).colorScheme.onSurface, @@ -55,32 +48,17 @@ class SettingsView extends StatelessWidget { padding: const EdgeInsets.all(32.0), child: Stack( children: [ - Material( - elevation: Theme.of(context) - .appBarTheme - .scrolledUnderElevation ?? - 4, - shadowColor: - Theme.of(context).appBarTheme.shadowColor, - shape: RoundedRectangleBorder( - side: BorderSide( - color: Theme.of(context).dividerColor, - ), - borderRadius: BorderRadius.circular( - Avatar.defaultSize * 2.5, - ), - ), - child: Avatar( - mxContent: profile?.avatarUrl, - name: displayname, - size: Avatar.defaultSize * 2.5, - ), + Avatar( + mxContent: profile?.avatarUrl, + name: displayname, + size: Avatar.defaultSize * 2.5, ), if (profile != null) Positioned( bottom: 0, right: 0, child: FloatingActionButton.small( + elevation: 2, onPressed: controller.setAvatarAction, heroTag: null, child: const Icon(Icons.camera_alt_outlined), @@ -108,7 +86,9 @@ class SettingsView extends StatelessWidget { displayname, maxLines: 1, overflow: TextOverflow.ellipsis, - // style: const TextStyle(fontSize: 18), + style: const TextStyle( + fontSize: 18, + ), ), ), TextButton.icon( @@ -135,10 +115,7 @@ class SettingsView extends StatelessWidget { ); }, ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), if (showChatBackupBanner == null) ListTile( leading: const Icon(Icons.backup_outlined), @@ -154,60 +131,54 @@ class SettingsView extends StatelessWidget { onChanged: controller.firstRunBootstrapAction, ), Divider( - height: 1, color: Theme.of(context).dividerColor, ), ListTile( leading: const Icon(Icons.format_paint_outlined), title: Text(L10n.of(context)!.changeTheme), onTap: () => context.go('/rooms/settings/style'), - trailing: const Icon(Icons.chevron_right_outlined), ), ListTile( leading: const Icon(Icons.notifications_outlined), title: Text(L10n.of(context)!.notifications), onTap: () => context.go('/rooms/settings/notifications'), - trailing: const Icon(Icons.chevron_right_outlined), ), ListTile( leading: const Icon(Icons.devices_outlined), title: Text(L10n.of(context)!.devices), onTap: () => context.go('/rooms/settings/devices'), - trailing: const Icon(Icons.chevron_right_outlined), ), ListTile( leading: const Icon(Icons.forum_outlined), title: Text(L10n.of(context)!.chat), onTap: () => context.go('/rooms/settings/chat'), - trailing: const Icon(Icons.chevron_right_outlined), ), ListTile( leading: const Icon(Icons.shield_outlined), title: Text(L10n.of(context)!.security), onTap: () => context.go('/rooms/settings/security'), - trailing: const Icon(Icons.chevron_right_outlined), - ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, ), + Divider(color: Theme.of(context).dividerColor), ListTile( leading: const Icon(Icons.help_outline_outlined), title: Text(L10n.of(context)!.help), onTap: () => launchUrlString(AppConfig.supportUrl), - trailing: const Icon(Icons.open_in_new_outlined), ), ListTile( leading: const Icon(Icons.shield_sharp), title: Text(L10n.of(context)!.privacy), onTap: () => launchUrlString(AppConfig.privacyUrl), - trailing: const Icon(Icons.open_in_new_outlined), ), ListTile( leading: const Icon(Icons.info_outline_rounded), title: Text(L10n.of(context)!.about), onTap: () => PlatformInfos.showDialog(context), - trailing: const Icon(Icons.chevron_right_outlined), + ), + Divider(color: Theme.of(context).dividerColor), + ListTile( + leading: const Icon(Icons.logout_outlined), + title: Text(L10n.of(context)!.logout), + onTap: controller.logoutAction, ), ], ), diff --git a/lib/pages/settings_3pid/settings_3pid_view.dart b/lib/pages/settings_3pid/settings_3pid_view.dart index 49f8b4489..4c5377c64 100644 --- a/lib/pages/settings_3pid/settings_3pid_view.dart +++ b/lib/pages/settings_3pid/settings_3pid_view.dart @@ -69,7 +69,7 @@ class Settings3PidView extends StatelessWidget { .withTheseAddressesRecoveryDescription, ), ), - const Divider(height: 1), + const Divider(), Expanded( child: ListView.builder( itemCount: identifier.length, diff --git a/lib/pages/settings_chat/settings_chat_view.dart b/lib/pages/settings_chat/settings_chat_view.dart index c3abe990e..01cc7af29 100644 --- a/lib/pages/settings_chat/settings_chat_view.dart +++ b/lib/pages/settings_chat/settings_chat_view.dart @@ -71,10 +71,7 @@ class SettingsChatView extends StatelessWidget { storeKey: SettingKeys.swipeRightToLeftToReply, defaultValue: AppConfig.swipeRightToLeftToReply, ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), ListTile( title: Text( L10n.of(context)!.customEmojisAndStickers, @@ -93,10 +90,7 @@ class SettingsChatView extends StatelessWidget { child: Icon(Icons.chevron_right_outlined), ), ), - Divider( - height: 1, - color: Theme.of(context).dividerColor, - ), + Divider(color: Theme.of(context).dividerColor), ListTile( title: Text( L10n.of(context)!.calls, diff --git a/lib/pages/settings_emotes/settings_emotes_view.dart b/lib/pages/settings_emotes/settings_emotes_view.dart index 7e72cd464..be1e36f92 100644 --- a/lib/pages/settings_emotes/settings_emotes_view.dart +++ b/lib/pages/settings_emotes/settings_emotes_view.dart @@ -117,7 +117,7 @@ class EmotesSettingsView extends StatelessWidget { onChanged: controller.setIsGloballyActive, ), if (!controller.readonly || controller.room != null) - const Divider(thickness: 1), + const Divider(), imageKeys.isEmpty ? Center( child: Padding( diff --git a/lib/pages/settings_security/settings_security_view.dart b/lib/pages/settings_security/settings_security_view.dart index 49b39d750..6ff7e1696 100644 --- a/lib/pages/settings_security/settings_security_view.dart +++ b/lib/pages/settings_security/settings_security_view.dart @@ -86,7 +86,6 @@ class SettingsSecurityView extends StatelessWidget { ), }, Divider( - height: 1, color: Theme.of(context).dividerColor, ), ListTile( diff --git a/lib/pages/settings_style/settings_style_view.dart b/lib/pages/settings_style/settings_style_view.dart index 86f48fe87..1a07dd2bc 100644 --- a/lib/pages/settings_style/settings_style_view.dart +++ b/lib/pages/settings_style/settings_style_view.dart @@ -136,7 +136,6 @@ class SettingsStyleView extends StatelessWidget { ), const SizedBox(height: 8), Divider( - height: 1, color: Theme.of(context).dividerColor, ), ListTile( @@ -167,7 +166,6 @@ class SettingsStyleView extends StatelessWidget { onChanged: controller.switchTheme, ), Divider( - height: 1, color: Theme.of(context).dividerColor, ), ListTile( @@ -192,7 +190,6 @@ class SettingsStyleView extends StatelessWidget { defaultValue: AppConfig.separateChatTypes, ), Divider( - height: 1, color: Theme.of(context).dividerColor, ), ListTile( diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart index 527915072..1ae173341 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart @@ -226,6 +226,45 @@ class UserBottomSheetController extends State { } } + bool isSending = false; + + Object? sendError; + + final TextEditingController sendController = TextEditingController(); + + void sendAction([_]) async { + final userId = widget.user?.id ?? widget.profile?.userId; + final client = Matrix.of(context).client; + if (userId == null) throw ('user or profile must not be null!'); + + final input = sendController.text.trim(); + if (input.isEmpty) return; + + setState(() { + isSending = true; + sendError = null; + }); + try { + final roomId = await client.startDirectChat(userId); + if (!mounted) return; + final room = client.getRoomById(roomId); + if (room == null) { + throw ('DM Room found or created but room not found in client'); + } + await room.sendTextEvent(input); + setState(() { + isSending = false; + sendController.clear(); + }); + } catch (e, s) { + Logs().d('Unable to send message', e, s); + setState(() { + isSending = false; + sendError = e; + }); + } + } + void knockAccept() async { final user = widget.user!; final result = await showFutureLoadingDialog( diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 9e72a4a3f..c6d3b5979 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -7,6 +7,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/url_launcher.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/presence_builder.dart'; @@ -29,6 +30,7 @@ class UserBottomSheetView extends StatelessWidget { final client = Matrix.of(controller.widget.outerContext).client; final profileSearchError = controller.widget.profileSearchError; + final dmRoomId = client.getDirectChatFromUserId(userId); return SafeArea( child: Scaffold( appBar: AppBar( @@ -90,19 +92,19 @@ class UserBottomSheetView extends StatelessWidget { ), ], ), - actions: [ - if (userId != client.userID && - !client.ignoredUsers.contains(userId)) - Padding( - padding: const EdgeInsets.only(right: 8.0), - child: IconButton( - icon: const Icon(Icons.block_outlined), - tooltip: L10n.of(context)!.block, - onPressed: () => controller - .participantAction(UserBottomSheetAction.ignore), - ), - ), - ], + actions: dmRoomId == null + ? null + : [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: FloatingActionButton.small( + elevation: 0, + onPressed: () => controller + .participantAction(UserBottomSheetAction.message), + child: const Icon(Icons.chat_outlined), + ), + ), + ], ), body: StreamBuilder( stream: user?.room.client.onSync.stream.where( @@ -169,25 +171,10 @@ class UserBottomSheetView extends StatelessWidget { children: [ Padding( padding: const EdgeInsets.all(16.0), - child: Material( - elevation: Theme.of(context) - .appBarTheme - .scrolledUnderElevation ?? - 4, - shadowColor: Theme.of(context).appBarTheme.shadowColor, - shape: RoundedRectangleBorder( - side: BorderSide( - color: Theme.of(context).dividerColor, - ), - borderRadius: BorderRadius.circular( - Avatar.defaultSize * 2.5, - ), - ), - child: Avatar( - mxContent: avatarUrl, - name: displayname, - size: Avatar.defaultSize * 2.5, - ), + child: Avatar( + mxContent: avatarUrl, + name: displayname, + size: Avatar.defaultSize * 2.5, ), ), Expanded( @@ -212,7 +199,7 @@ class UserBottomSheetView extends StatelessWidget { displayname, maxLines: 1, overflow: TextOverflow.ellipsis, - // style: const TextStyle(fontSize: 18), + style: const TextStyle(fontSize: 18), ), ), TextButton.icon( @@ -247,16 +234,35 @@ class UserBottomSheetView extends StatelessWidget { horizontal: 16.0, vertical: 8.0, ), - child: ElevatedButton.icon( - onPressed: () => controller - .participantAction(UserBottomSheetAction.message), - icon: const Icon(Icons.forum_outlined), - label: Text( - controller.widget.user == null - ? L10n.of(context)!.startConversation - : L10n.of(context)!.sendAMessage, - ), - ), + child: dmRoomId == null + ? ElevatedButton.icon( + onPressed: () => controller.participantAction( + UserBottomSheetAction.message, + ), + icon: const Icon(Icons.chat_outlined), + label: Text(L10n.of(context)!.startConversation), + ) + : TextField( + controller: controller.sendController, + readOnly: controller.isSending, + onSubmitted: controller.sendAction, + minLines: 1, + maxLines: 1, + textInputAction: TextInputAction.send, + decoration: InputDecoration( + errorText: controller.sendError + ?.toLocalizedString(context), + hintText: L10n.of(context)!.sendMessages, + suffixIcon: controller.isSending + ? const CircularProgressIndicator.adaptive( + strokeWidth: 2, + ) + : IconButton( + icon: const Icon(Icons.send_outlined), + onPressed: controller.sendAction, + ), + ), + ), ), PresenceBuilder( userId: userId, @@ -334,8 +340,8 @@ class UserBottomSheetView extends StatelessWidget { ), ), ), - Divider(color: Theme.of(context).dividerColor), ], + Divider(color: Theme.of(context).dividerColor), if (user != null && user.canKick) ListTile( textColor: Theme.of(context).colorScheme.error, @@ -370,7 +376,7 @@ class UserBottomSheetView extends StatelessWidget { textColor: Theme.of(context).colorScheme.onErrorContainer, iconColor: Theme.of(context).colorScheme.onErrorContainer, title: Text(L10n.of(context)!.reportUser), - leading: const Icon(Icons.report_outlined), + leading: const Icon(Icons.gavel_outlined), onTap: () => controller .participantAction(UserBottomSheetAction.report), ), @@ -385,6 +391,16 @@ class UserBottomSheetView extends StatelessWidget { style: const TextStyle(color: Colors.orange), ), ), + if (userId != client.userID && + !client.ignoredUsers.contains(userId)) + ListTile( + textColor: Theme.of(context).colorScheme.onErrorContainer, + iconColor: Theme.of(context).colorScheme.onErrorContainer, + leading: const Icon(Icons.block_outlined), + title: Text(L10n.of(context)!.block), + onTap: () => controller + .participantAction(UserBottomSheetAction.ignore), + ), ], ); }, From 39a66f678676acb67b1abf79a73fabd64b6c9d83 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 16:20:13 +0200 Subject: [PATCH 082/106] chore: Follow up user bottom sheet --- .../user_bottom_sheet/user_bottom_sheet_view.dart | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index c6d3b5979..fbdcb52ec 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -96,7 +96,7 @@ class UserBottomSheetView extends StatelessWidget { ? null : [ Padding( - padding: const EdgeInsets.symmetric(horizontal: 4), + padding: const EdgeInsets.symmetric(horizontal: 8), child: FloatingActionButton.small( elevation: 0, onPressed: () => controller @@ -253,10 +253,17 @@ class UserBottomSheetView extends StatelessWidget { errorText: controller.sendError ?.toLocalizedString(context), hintText: L10n.of(context)!.sendMessages, - suffixIcon: controller.isSending - ? const CircularProgressIndicator.adaptive( - strokeWidth: 2, + suffix: controller.isSending + ? const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), ) + : null, + suffixIcon: controller.isSending + ? null : IconButton( icon: const Icon(Icons.send_outlined), onPressed: controller.sendAction, From 22cfdd7689c27aeb1f326aadef52571d2a4bbf5b Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 16:50:41 +0200 Subject: [PATCH 083/106] chore: Follow up user bottom sheet --- .../user_bottom_sheet_view.dart | 131 ++++++++---------- 1 file changed, 55 insertions(+), 76 deletions(-) diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index fbdcb52ec..8630faba0 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -38,60 +38,7 @@ class UserBottomSheetView extends StatelessWidget { onPressed: Navigator.of(context, rootNavigator: false).pop, ), centerTitle: false, - title: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(displayname), - PresenceBuilder( - userId: userId, - client: client, - builder: (context, presence) { - if (presence == null || - (presence.presence == PresenceType.offline && - presence.lastActiveTimestamp == null)) { - return const SizedBox.shrink(); - } - - final dotColor = presence.presence.isOnline - ? Colors.green - : presence.presence.isUnavailable - ? Colors.orange - : Colors.grey; - - final lastActiveTimestamp = presence.lastActiveTimestamp; - - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: 8, - height: 8, - margin: const EdgeInsets.only(right: 8), - decoration: BoxDecoration( - color: dotColor, - borderRadius: BorderRadius.circular(16), - ), - ), - if (presence.currentlyActive == true) - Text( - L10n.of(context)!.currentlyActive, - overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.bodySmall, - ) - else if (lastActiveTimestamp != null) - Text( - L10n.of(context)!.lastActiveAgo( - lastActiveTimestamp.localizedTimeShort(context), - ), - overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.bodySmall, - ), - ], - ); - }, - ), - ], - ), + title: Text(displayname), actions: dmRoomId == null ? null : [ @@ -182,26 +129,6 @@ class UserBottomSheetView extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ - TextButton.icon( - onPressed: () => FluffyShare.share( - 'https://matrix.to/#/$userId', - context, - ), - icon: Icon( - Icons.adaptive.share_outlined, - size: 16, - ), - style: TextButton.styleFrom( - foregroundColor: - Theme.of(context).colorScheme.onSurface, - ), - label: Text( - displayname, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: const TextStyle(fontSize: 18), - ), - ), TextButton.icon( onPressed: () => FluffyShare.share( userId, @@ -214,15 +141,67 @@ class UserBottomSheetView extends StatelessWidget { ), style: TextButton.styleFrom( foregroundColor: - Theme.of(context).colorScheme.secondary, + Theme.of(context).colorScheme.onSurface, ), label: Text( userId, maxLines: 1, overflow: TextOverflow.ellipsis, - // style: const TextStyle(fontSize: 12), ), ), + PresenceBuilder( + userId: userId, + client: client, + builder: (context, presence) { + if (presence == null || + (presence.presence == PresenceType.offline && + presence.lastActiveTimestamp == null)) { + return const SizedBox.shrink(); + } + + final dotColor = presence.presence.isOnline + ? Colors.green + : presence.presence.isUnavailable + ? Colors.orange + : Colors.grey; + + final lastActiveTimestamp = + presence.lastActiveTimestamp; + + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(width: 16), + Container( + width: 8, + height: 8, + decoration: BoxDecoration( + color: dotColor, + borderRadius: BorderRadius.circular(16), + ), + ), + const SizedBox(width: 12), + if (presence.currentlyActive == true) + Text( + L10n.of(context)!.currentlyActive, + overflow: TextOverflow.ellipsis, + style: + Theme.of(context).textTheme.bodySmall, + ) + else if (lastActiveTimestamp != null) + Text( + L10n.of(context)!.lastActiveAgo( + lastActiveTimestamp + .localizedTimeShort(context), + ), + overflow: TextOverflow.ellipsis, + style: + Theme.of(context).textTheme.bodySmall, + ), + ], + ); + }, + ), ], ), ), From d71d633ccef6e86b215a011dddb7f826b2ce34a8 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 17:32:36 +0200 Subject: [PATCH 084/106] chore: nicer bottom sheets --- .../user_bottom_sheet/user_bottom_sheet.dart | 2 +- .../user_bottom_sheet_view.dart | 46 +++++++++---------- lib/utils/adaptive_bottom_sheet.dart | 7 +-- lib/widgets/public_room_bottom_sheet.dart | 10 ++-- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart index 1ae173341..45be5c975 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart @@ -234,7 +234,7 @@ class UserBottomSheetController extends State { void sendAction([_]) async { final userId = widget.user?.id ?? widget.profile?.userId; - final client = Matrix.of(context).client; + final client = Matrix.of(widget.outerContext).client; if (userId == null) throw ('user or profile must not be null!'); final input = sendController.text.trim(); diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 8630faba0..01035bb77 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -207,6 +207,29 @@ class UserBottomSheetView extends StatelessWidget { ), ], ), + PresenceBuilder( + userId: userId, + client: client, + builder: (context, presence) { + final status = presence?.statusMsg; + if (status == null || status.isEmpty) { + return const SizedBox.shrink(); + } + return ListTile( + title: SelectableLinkify( + text: status, + style: const TextStyle(fontSize: 16), + options: const LinkifyOptions(humanize: false), + linkStyle: const TextStyle( + color: Colors.blueAccent, + decorationColor: Colors.blueAccent, + ), + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ); + }, + ), if (userId != client.userID) Padding( padding: const EdgeInsets.symmetric( @@ -250,29 +273,6 @@ class UserBottomSheetView extends StatelessWidget { ), ), ), - PresenceBuilder( - userId: userId, - client: client, - builder: (context, presence) { - final status = presence?.statusMsg; - if (status == null || status.isEmpty) { - return const SizedBox.shrink(); - } - return ListTile( - title: SelectableLinkify( - text: status, - style: const TextStyle(fontSize: 16), - options: const LinkifyOptions(humanize: false), - linkStyle: const TextStyle( - color: Colors.blueAccent, - decorationColor: Colors.blueAccent, - ), - onOpen: (url) => - UrlLauncher(context, url.url).launchUrl(), - ), - ); - }, - ), if (controller.widget.onMention != null) ListTile( leading: const Icon(Icons.alternate_email_outlined), diff --git a/lib/utils/adaptive_bottom_sheet.dart b/lib/utils/adaptive_bottom_sheet.dart index cfe487ffd..d21ca6c44 100644 --- a/lib/utils/adaptive_bottom_sheet.dart +++ b/lib/utils/adaptive_bottom_sheet.dart @@ -8,18 +8,19 @@ Future showAdaptiveBottomSheet({ required Widget Function(BuildContext) builder, bool isDismissible = true, bool isScrollControlled = true, - double maxHeight = 480.0, + double maxHeight = 512, + bool useRootNavigator = true, }) => showModalBottomSheet( context: context, builder: builder, // this sadly is ugly on desktops but otherwise breaks `.of(context)` calls - useRootNavigator: false, + useRootNavigator: useRootNavigator, isDismissible: isDismissible, isScrollControlled: isScrollControlled, constraints: BoxConstraints( maxHeight: maxHeight, - maxWidth: FluffyThemes.columnWidth * 1.5, + maxWidth: FluffyThemes.columnWidth * 1.25, ), clipBehavior: Clip.hardEdge, shape: const RoundedRectangleBorder( diff --git a/lib/widgets/public_room_bottom_sheet.dart b/lib/widgets/public_room_bottom_sheet.dart index 8bd354ef5..4f5806c2d 100644 --- a/lib/widgets/public_room_bottom_sheet.dart +++ b/lib/widgets/public_room_bottom_sheet.dart @@ -64,17 +64,17 @@ class PublicRoomBottomSheet extends StatelessWidget { bool _testRoom(PublicRoomsChunk r) => r.canonicalAlias == roomAlias; - Future _search(BuildContext context) async { + Future _search() async { final chunk = this.chunk; if (chunk != null) return chunk; - final query = await Matrix.of(context).client.queryPublicRooms( + final query = await Matrix.of(outerContext).client.queryPublicRooms( server: roomAlias!.domain, filter: PublicRoomQueryFilter( genericSearchTerm: roomAlias, ), ); if (!query.chunk.any(_testRoom)) { - throw (L10n.of(context)!.noRoomsFound); + throw (L10n.of(outerContext)!.noRoomsFound); } return query.chunk.firstWhere(_testRoom); } @@ -108,7 +108,7 @@ class PublicRoomBottomSheet extends StatelessWidget { ], ), body: FutureBuilder( - future: _search(context), + future: _search(), builder: (context, snapshot) { final profile = snapshot.data; return ListView( @@ -142,7 +142,7 @@ class PublicRoomBottomSheet extends StatelessWidget { onPressed: () => _joinRoom(context), label: Text( chunk?.joinRule == 'knock' && - Matrix.of(context) + Matrix.of(outerContext) .client .getRoomById(chunk!.roomId) == null From b20cee34d4275e97ba680d30b52b95d6e6e6c2f6 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 17:57:30 +0200 Subject: [PATCH 085/106] chore: Follow up nicer max width pages --- lib/pages/chat_list/chat_list.dart | 7 +-- lib/widgets/layouts/max_width_body.dart | 62 ++++++++++++------------- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 63cb35571..99d31bf58 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -716,9 +716,10 @@ class ChatListController extends State isDestructiveAction: true, ); if (confirmed == OkCancelResult.cancel) return; - if (!mounted) { - await showFutureLoadingDialog(context: context, future: room.leave); - } + if (!mounted) return; + + await showFutureLoadingDialog(context: context, future: room.leave); + return; } } diff --git a/lib/widgets/layouts/max_width_body.dart b/lib/widgets/layouts/max_width_body.dart index e9499d31e..97c340231 100644 --- a/lib/widgets/layouts/max_width_body.dart +++ b/lib/widgets/layouts/max_width_body.dart @@ -1,20 +1,17 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; class MaxWidthBody extends StatelessWidget { - final Widget? child; + final Widget child; final double maxWidth; - final bool withFrame; final bool withScrolling; final EdgeInsets? innerPadding; const MaxWidthBody({ - this.child, + required this.child, this.maxWidth = 600, - this.withFrame = true, this.withScrolling = true, this.innerPadding, super.key, @@ -24,36 +21,35 @@ class MaxWidthBody extends StatelessWidget { return SafeArea( child: LayoutBuilder( builder: (context, constraints) { - final paddingVal = max(0, (constraints.maxWidth - maxWidth) / 2); - final hasPadding = paddingVal > 0; - final padding = EdgeInsets.symmetric( - vertical: hasPadding ? 32 : 0, - horizontal: max(0, (constraints.maxWidth - maxWidth) / 2), - ); - final childWithPadding = Padding( - padding: padding, - child: withFrame && hasPadding - ? Material( - elevation: - Theme.of(context).appBarTheme.scrolledUnderElevation ?? - 4, - clipBehavior: Clip.hardEdge, - borderRadius: BorderRadius.circular(AppConfig.borderRadius), - shadowColor: Theme.of(context).appBarTheme.shadowColor, - child: child, - ) - : child, - ); - if (!withScrolling) { - return Padding( - padding: innerPadding ?? EdgeInsets.zero, - child: childWithPadding, - ); - } + const desiredWidth = FluffyThemes.columnWidth * 1.5; + final body = constraints.maxWidth <= desiredWidth + ? child + : Container( + alignment: Alignment.topCenter, + padding: const EdgeInsets.all(32), + child: ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.columnWidth * 1.5, + ), + child: Material( + elevation: Theme.of(context) + .appBarTheme + .scrolledUnderElevation ?? + 4, + clipBehavior: Clip.hardEdge, + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + shadowColor: Theme.of(context).appBarTheme.shadowColor, + child: child, + ), + ), + ); + if (!withScrolling) return body; + return SingleChildScrollView( padding: innerPadding, physics: const ScrollPhysics(), - child: childWithPadding, + child: body, ); }, ), From 8128c960dc5523a99049c84d58f1b45e7a3848d5 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 18:07:54 +0200 Subject: [PATCH 086/106] chore: Follow up pinned events --- lib/pages/chat/chat_app_bar_list_tile.dart | 61 ++++++++++++---------- lib/pages/chat/chat_view.dart | 6 +-- lib/pages/chat/pinned_events.dart | 4 +- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/lib/pages/chat/chat_app_bar_list_tile.dart b/lib/pages/chat/chat_app_bar_list_tile.dart index 1e0ec8259..259144251 100644 --- a/lib/pages/chat/chat_app_bar_list_tile.dart +++ b/lib/pages/chat/chat_app_bar_list_tile.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; -import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/url_launcher.dart'; class ChatAppBarListTile extends StatelessWidget { @@ -11,6 +10,8 @@ class ChatAppBarListTile extends StatelessWidget { final Widget? trailing; final void Function()? onTap; + static const double fixedHeight = 40.0; + const ChatAppBarListTile({ super.key, this.leading, @@ -23,38 +24,40 @@ class ChatAppBarListTile extends StatelessWidget { Widget build(BuildContext context) { final leading = this.leading; final trailing = this.trailing; - final fontSize = AppConfig.messageFontSize * AppConfig.fontSizeFactor; - return InkWell( - onTap: onTap, - child: Row( - children: [ - if (leading != null) leading, - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 4.0), - child: Linkify( - text: title, - options: const LinkifyOptions(humanize: false), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color: Theme.of(context).colorScheme.onSurfaceVariant, + return SizedBox( + height: fixedHeight, + child: InkWell( + onTap: onTap, + child: Row( + children: [ + if (leading != null) leading, + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Linkify( + text: title, + options: const LinkifyOptions(humanize: false), + maxLines: 1, overflow: TextOverflow.ellipsis, - fontSize: fontSize, + style: TextStyle( + color: Theme.of(context).colorScheme.onSurfaceVariant, + overflow: TextOverflow.ellipsis, + fontSize: 14, + ), + linkStyle: TextStyle( + color: Theme.of(context).colorScheme.onSurfaceVariant, + fontSize: 14, + decoration: TextDecoration.underline, + decorationColor: + Theme.of(context).colorScheme.onSurfaceVariant, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), ), - linkStyle: TextStyle( - color: Theme.of(context).colorScheme.onSurfaceVariant, - fontSize: fontSize, - decoration: TextDecoration.underline, - decorationColor: - Theme.of(context).colorScheme.onSurfaceVariant, - ), - onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), ), ), - ), - if (trailing != null) trailing, - ], + if (trailing != null) trailing, + ], + ), ), ); } diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 80a84fa41..422175f0f 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -158,15 +158,15 @@ class ChatView extends StatelessWidget { builder: (BuildContext context, snapshot) { var appbarBottomHeight = 0.0; if (controller.room.pinnedEventIds.isNotEmpty) { - appbarBottomHeight += 42; + appbarBottomHeight += ChatAppBarListTile.fixedHeight; } if (scrollUpBannerEventId != null) { - appbarBottomHeight += 42; + appbarBottomHeight += ChatAppBarListTile.fixedHeight; } final tombstoneEvent = controller.room.getState(EventTypes.RoomTombstone); if (tombstoneEvent != null) { - appbarBottomHeight += 42; + appbarBottomHeight += ChatAppBarListTile.fixedHeight; } return Scaffold( appBar: AppBar( diff --git a/lib/pages/chat/pinned_events.dart b/lib/pages/chat/pinned_events.dart index 0940a786f..7afe413db 100644 --- a/lib/pages/chat/pinned_events.dart +++ b/lib/pages/chat/pinned_events.dart @@ -71,8 +71,8 @@ class PinnedEvents extends StatelessWidget { ) ?? L10n.of(context)!.loadingPleaseWait, leading: IconButton( - splashRadius: 20, - iconSize: 20, + splashRadius: 18, + iconSize: 18, color: Theme.of(context).colorScheme.onSurfaceVariant, icon: const Icon(Icons.push_pin), tooltip: L10n.of(context)!.unpin, From 3d965bf6ac7c06d01531e04041086114bd40a17e Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 18:31:27 +0200 Subject: [PATCH 087/106] chore: Follow up user bottom sheet --- lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 01035bb77..0b78c27f9 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -119,6 +119,8 @@ class UserBottomSheetView extends StatelessWidget { Padding( padding: const EdgeInsets.all(16.0), child: Avatar( + client: + Matrix.of(controller.widget.outerContext).client, mxContent: avatarUrl, name: displayname, size: Avatar.defaultSize * 2.5, From b1a9c6e92db32b69be43cf847ef60b71b97c9a2b Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 19:36:07 +0200 Subject: [PATCH 088/106] chore: Follow up user bottom sheet --- lib/widgets/avatar.dart | 1 + lib/widgets/mxc_image.dart | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index c3e24fe16..c8096ed85 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -79,6 +79,7 @@ class Avatar extends StatelessWidget { child: noPic ? textWidget : MxcImage( + client: client, key: ValueKey(mxContent.toString()), cacheKey: '${mxContent}_$size', uri: mxContent, diff --git a/lib/widgets/mxc_image.dart b/lib/widgets/mxc_image.dart index 34c53cb57..2126a8cbe 100644 --- a/lib/widgets/mxc_image.dart +++ b/lib/widgets/mxc_image.dart @@ -23,6 +23,7 @@ class MxcImage extends StatefulWidget { final ThumbnailMethod thumbnailMethod; final Widget Function(BuildContext context)? placeholder; final String? cacheKey; + final Client? client; const MxcImage({ this.uri, @@ -38,6 +39,7 @@ class MxcImage extends StatefulWidget { this.animationCurve = FluffyThemes.animationCurve, this.thumbnailMethod = ThumbnailMethod.scale, this.cacheKey, + this.client, super.key, }); @@ -64,7 +66,7 @@ class _MxcImageState extends State { bool? _isCached; Future _load() async { - final client = Matrix.of(context).client; + final client = widget.client ?? Matrix.of(context).client; final uri = widget.uri; final event = widget.event; From 3434741bc5f8b7d82e0e4c6cfb7f6d0c7472d05c Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 21:02:58 +0200 Subject: [PATCH 089/106] refactor: Clean up some widths --- lib/config/app_config.dart | 2 +- lib/pages/chat_list/navi_rail_item.dart | 4 ++-- lib/widgets/layouts/two_column_layout.dart | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 841d810ec..298b8743c 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -12,7 +12,7 @@ abstract class AppConfig { static double fontSizeFactor = 1; static const Color chatColor = primaryColor; static Color? colorSchemeSeed = primaryColor; - static const double messageFontSize = 15.75; + static const double messageFontSize = 16.0; static const bool allowOtherHomeservers = true; static const bool enableRegistration = true; static const Color primaryColor = Color(0xFF5625BA); diff --git a/lib/pages/chat_list/navi_rail_item.dart b/lib/pages/chat_list/navi_rail_item.dart index 66ad7c041..6cbb70e2e 100644 --- a/lib/pages/chat_list/navi_rail_item.dart +++ b/lib/pages/chat_list/navi_rail_item.dart @@ -33,8 +33,8 @@ class NaviRailItem extends StatelessWidget { return HoverBuilder( builder: (context, hovered) { return SizedBox( - height: 64, - width: 64, + height: FluffyThemes.navRailWidth, + width: FluffyThemes.navRailWidth, child: Stack( children: [ Positioned( diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index a6f4c8bdf..33003472e 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -1,3 +1,4 @@ +import 'package:fluffychat/config/themes.dart'; import 'package:flutter/material.dart'; class TwoColumnLayout extends StatelessWidget { @@ -20,7 +21,8 @@ class TwoColumnLayout extends StatelessWidget { Container( clipBehavior: Clip.antiAlias, decoration: const BoxDecoration(), - width: 360.0 + (displayNavigationRail ? 64 : 0), + width: FluffyThemes.columnWidth + + (displayNavigationRail ? FluffyThemes.navRailWidth : 0), child: mainView, ), Container( From 30e3a4f2ff8bd840f23fc115efd1176cea66dc59 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 21:06:53 +0200 Subject: [PATCH 090/106] chore: Nicer background for sate message and time in chat --- lib/pages/chat/events/message.dart | 30 ++++++++++------------ lib/pages/chat/events/state_message.dart | 10 +++++--- lib/widgets/layouts/two_column_layout.dart | 3 ++- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 6a4ec3f2e..5f1e7dc35 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -435,22 +435,20 @@ class Message extends StatelessWidget { ? const EdgeInsets.symmetric(vertical: 8.0) : EdgeInsets.zero, child: Center( - child: Material( - color: displayTime - ? Theme.of(context).colorScheme.surface - : Theme.of(context).colorScheme.surface.withOpacity(0.33), - borderRadius: - BorderRadius.circular(AppConfig.borderRadius / 2), - clipBehavior: Clip.antiAlias, - child: Padding( - padding: const EdgeInsets.only(top: 4.0), - child: Text( - event.originServerTs.localizedTime(context), - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 12 * AppConfig.fontSizeFactor, - color: Theme.of(context).colorScheme.secondary, - ), + child: Padding( + padding: const EdgeInsets.only(top: 4.0), + child: Text( + event.originServerTs.localizedTime(context), + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12 * AppConfig.fontSizeFactor, + color: Theme.of(context).colorScheme.secondary, + shadows: [ + Shadow( + color: Theme.of(context).colorScheme.surface, + blurRadius: 3, + ), + ], ), ), ), diff --git a/lib/pages/chat/events/state_message.dart b/lib/pages/chat/events/state_message.dart index 0aa5d9dc2..ebd6f7373 100644 --- a/lib/pages/chat/events/state_message.dart +++ b/lib/pages/chat/events/state_message.dart @@ -17,10 +17,6 @@ class StateMessage extends StatelessWidget { child: Center( child: Container( padding: const EdgeInsets.all(8), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.surface, - borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), - ), child: Text( event.calcLocalizedBodyFallback( MatrixLocals(L10n.of(context)!), @@ -29,6 +25,12 @@ class StateMessage extends StatelessWidget { style: TextStyle( fontSize: 12 * AppConfig.fontSizeFactor, decoration: event.redacted ? TextDecoration.lineThrough : null, + shadows: [ + Shadow( + color: Theme.of(context).colorScheme.surface, + blurRadius: 3, + ), + ], ), ), ), diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index 33003472e..cf1083a3f 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -1,6 +1,7 @@ -import 'package:fluffychat/config/themes.dart'; import 'package:flutter/material.dart'; +import 'package:fluffychat/config/themes.dart'; + class TwoColumnLayout extends StatelessWidget { final Widget mainView; final Widget sideView; From 5b648624dae097755bd69ea0563a8e52e4b3c188 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 21:25:45 +0200 Subject: [PATCH 091/106] chore: Chat permissions page follow up --- assets/l10n/intl_en.arb | 3 ++- .../chat_permissions_settings_view.dart | 16 ++++++++++++++ .../permission_list_tile.dart | 22 ++++++++++++------- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index f7016107b..7132187c1 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2739,5 +2739,6 @@ "changeTheVisibilityOfChatHistory": "Change the visibility of the chat history", "changeTheCanonicalRoomAlias": "Change the main public chat address", "sendRoomNotifications": "Send a @room notifications", - "changeTheDescriptionOfTheGroup": "Change the description of the chat" + "changeTheDescriptionOfTheGroup": "Change the description of the chat", + "chatPermissionsDescription": "Define which power level is necessary for certain actions in this chat. The power levels 0, 50 and 100 are usually representing users, moderators and admins, but any gradation is possible." } diff --git a/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart b/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart index 50d46c08e..610f6b0e8 100644 --- a/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart +++ b/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart @@ -41,6 +41,22 @@ class ChatPermissionsSettingsView extends StatelessWidget { )..removeWhere((k, v) => v is! int); return Column( children: [ + ListTile( + leading: const Icon(Icons.info_outlined), + subtitle: Text( + L10n.of(context)!.chatPermissionsDescription, + ), + ), + Divider(color: Theme.of(context).dividerColor), + ListTile( + title: Text( + L10n.of(context)!.chatPermissions, + style: TextStyle( + color: Theme.of(context).colorScheme.primary, + fontWeight: FontWeight.bold, + ), + ), + ), Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/pages/chat_permissions_settings/permission_list_tile.dart b/lib/pages/chat_permissions_settings/permission_list_tile.dart index 99f9e553b..118982d37 100644 --- a/lib/pages/chat_permissions_settings/permission_list_tile.dart +++ b/lib/pages/chat_permissions_settings/permission_list_tile.dart @@ -82,11 +82,8 @@ class PermissionsListTile extends StatelessWidget { style: Theme.of(context).textTheme.titleSmall, ), trailing: Material( - color: color.withAlpha(64), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), - side: BorderSide(color: color), - ), + color: color.withAlpha(32), + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), child: DropdownButton( padding: const EdgeInsets.symmetric(horizontal: 8.0), borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), @@ -96,15 +93,24 @@ class PermissionsListTile extends StatelessWidget { items: [ DropdownMenuItem( value: permission < 50 ? permission : 0, - child: Text(L10n.of(context)!.userLevel(permission)), + child: Text( + L10n.of(context)!.userLevel(permission < 50 ? permission : 0), + ), ), DropdownMenuItem( value: permission < 100 && permission >= 50 ? permission : 50, - child: Text(L10n.of(context)!.moderatorLevel(permission)), + child: Text( + L10n.of(context)!.moderatorLevel( + permission < 100 && permission >= 50 ? permission : 50, + ), + ), ), DropdownMenuItem( value: permission >= 100 ? permission : 100, - child: Text(L10n.of(context)!.adminLevel(permission)), + child: Text( + L10n.of(context)! + .adminLevel(permission >= 100 ? permission : 100), + ), ), DropdownMenuItem( value: null, From c7b9acfcdf828a029cdbda5c3876cded45324c84 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 22:05:51 +0200 Subject: [PATCH 092/106] chore: Polish public room bottom sheet --- lib/widgets/public_room_bottom_sheet.dart | 111 +++++++++++++--------- 1 file changed, 64 insertions(+), 47 deletions(-) diff --git a/lib/widgets/public_room_bottom_sheet.dart b/lib/widgets/public_room_bottom_sheet.dart index 4f5806c2d..3ac568d8c 100644 --- a/lib/widgets/public_room_bottom_sheet.dart +++ b/lib/widgets/public_room_bottom_sheet.dart @@ -10,7 +10,6 @@ import 'package:fluffychat/utils/fluffy_share.dart'; import 'package:fluffychat/utils/url_launcher.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; -import '../utils/localized_exception_extension.dart'; class PublicRoomBottomSheet extends StatelessWidget { final String? roomAlias; @@ -82,6 +81,7 @@ class PublicRoomBottomSheet extends StatelessWidget { @override Widget build(BuildContext context) { final roomAlias = this.roomAlias ?? chunk?.canonicalAlias; + final roomLink = roomAlias ?? chunk?.roomId; return SafeArea( child: Scaffold( appBar: AppBar( @@ -114,28 +114,71 @@ class PublicRoomBottomSheet extends StatelessWidget { return ListView( padding: EdgeInsets.zero, children: [ - if (profile == null) - Container( - height: 156, - alignment: Alignment.center, - color: Theme.of(context).secondaryHeaderColor, - child: snapshot.hasError - ? Text(snapshot.error!.toLocalizedString(context)) - : const CircularProgressIndicator.adaptive( - strokeWidth: 2, - ), - ) - else - Center( - child: Padding( + Row( + children: [ + Padding( padding: const EdgeInsets.all(16.0), - child: Avatar( - mxContent: profile.avatarUrl, - name: profile.name ?? roomAlias, - size: Avatar.defaultSize * 3, + child: profile == null + ? const Center( + child: CircularProgressIndicator.adaptive(), + ) + : Avatar( + client: Matrix.of(outerContext).client, + mxContent: profile.avatarUrl, + name: profile.name ?? roomAlias, + size: Avatar.defaultSize * 3, + ), + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextButton.icon( + onPressed: roomLink != null + ? () => FluffyShare.share( + roomLink, + context, + copyOnly: true, + ) + : null, + icon: const Icon( + Icons.copy_outlined, + size: 14, + ), + style: TextButton.styleFrom( + foregroundColor: + Theme.of(context).colorScheme.onSurface, + ), + label: Text( + roomLink ?? '...', + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + TextButton.icon( + onPressed: () {}, + icon: const Icon( + Icons.groups_3_outlined, + size: 14, + ), + style: TextButton.styleFrom( + foregroundColor: + Theme.of(context).colorScheme.onSurface, + ), + label: Text( + L10n.of(context)!.countParticipants( + profile?.numJoinedMembers ?? 0, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], ), ), - ), + ], + ), Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: ElevatedButton.icon( @@ -151,36 +194,10 @@ class PublicRoomBottomSheet extends StatelessWidget { ? L10n.of(context)!.joinSpace : L10n.of(context)!.joinRoom, ), - icon: const Icon(Icons.login_outlined), + icon: const Icon(Icons.navigate_next), ), ), const SizedBox(height: 16), - ListTile( - title: Text( - profile?.name ?? - roomAlias?.localpart ?? - chunk?.roomId.localpart ?? - L10n.of(context)!.chat, - ), - subtitle: Text( - '${L10n.of(context)!.participant}: ${profile?.numJoinedMembers ?? 0}', - ), - trailing: const Icon(Icons.account_box_outlined), - ), - if (roomAlias != null) - ListTile( - title: Text(L10n.of(context)!.publicLink), - subtitle: SelectableText(roomAlias), - contentPadding: - const EdgeInsets.symmetric(horizontal: 16.0), - trailing: IconButton( - icon: const Icon(Icons.copy_outlined), - onPressed: () => FluffyShare.share( - roomAlias, - context, - ), - ), - ), if (profile?.topic?.isNotEmpty ?? false) ListTile( subtitle: SelectableLinkify( From 76b7fbf36f7446037b131b148643e5fc6c21203f Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 26 Jul 2024 22:12:03 +0200 Subject: [PATCH 093/106] chore: Follow up join space children --- lib/pages/chat_list/space_view.dart | 47 ++++++++--------------- lib/widgets/public_room_bottom_sheet.dart | 13 ++++--- 2 files changed, 25 insertions(+), 35 deletions(-) diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart index 5ad99faa8..94341ed9e 100644 --- a/lib/pages/chat_list/space_view.dart +++ b/lib/pages/chat_list/space_view.dart @@ -11,10 +11,12 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; import 'package:fluffychat/pages/chat_list/search_title.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/stream_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/public_room_bottom_sheet.dart'; enum AddRoomType { chat, subspace } @@ -95,38 +97,23 @@ class _SpaceViewState extends State { final client = Matrix.of(context).client; final space = client.getRoomById(widget.spaceId); - final consent = await showOkCancelAlertDialog( + final joined = await showAdaptiveBottomSheet( context: context, - title: item.name ?? item.canonicalAlias ?? L10n.of(context)!.emptyChat, - message: item.topic, - okLabel: L10n.of(context)!.joinRoom, - cancelLabel: L10n.of(context)!.cancel, + builder: (_) => PublicRoomBottomSheet( + outerContext: context, + chunk: item, + via: space?.spaceChildren + .firstWhereOrNull( + (child) => child.roomId == item.roomId, + ) + ?.via, + ), ); - if (consent != OkCancelResult.ok) return; - if (!mounted) return; - - await showFutureLoadingDialog( - context: context, - future: () async { - await client.joinRoom( - item.roomId, - serverName: space?.spaceChildren - .firstWhereOrNull( - (child) => child.roomId == item.roomId, - ) - ?.via, - ); - if (client.getRoomById(item.roomId) == null) { - // Wait for room actually appears in sync - await client.waitForRoomInSync(item.roomId, join: true); - } - }, - ); - if (!mounted) return; - - setState(() { - _discoveredChildren.remove(item); - }); + if (mounted && joined == true) { + setState(() { + _discoveredChildren.remove(item); + }); + } } void _onSpaceAction(SpaceActions action) async { diff --git a/lib/widgets/public_room_bottom_sheet.dart b/lib/widgets/public_room_bottom_sheet.dart index 3ac568d8c..3105cc576 100644 --- a/lib/widgets/public_room_bottom_sheet.dart +++ b/lib/widgets/public_room_bottom_sheet.dart @@ -15,13 +15,13 @@ class PublicRoomBottomSheet extends StatelessWidget { final String? roomAlias; final BuildContext outerContext; final PublicRoomsChunk? chunk; - final VoidCallback? onRoomJoined; + final List? via; PublicRoomBottomSheet({ this.roomAlias, required this.outerContext, this.chunk, - this.onRoomJoined, + this.via, super.key, }) { assert(roomAlias != null || chunk != null); @@ -38,8 +38,11 @@ class PublicRoomBottomSheet extends StatelessWidget { return chunk.roomId; } final roomId = chunk != null && knock - ? await client.knockRoom(chunk.roomId) - : await client.joinRoom(roomAlias ?? chunk!.roomId); + ? await client.knockRoom(chunk.roomId, serverName: via) + : await client.joinRoom( + roomAlias ?? chunk!.roomId, + serverName: via, + ); if (!knock && client.getRoomById(roomId) == null) { await client.waitForRoomInSync(roomId); @@ -51,7 +54,7 @@ class PublicRoomBottomSheet extends StatelessWidget { return; } if (result.error == null) { - Navigator.of(context).pop(); + Navigator.of(context).pop(true); // don't open the room if the joined room is a space if (chunk?.roomType != 'm.space' && !client.getRoomById(result.result!)!.isSpace) { From 8dd43d8a7fb6d69abd5bdb454476dfc2ab0bb79c Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sat, 27 Jul 2024 19:02:47 +0200 Subject: [PATCH 094/106] build: Update to Flutter 3.22.3 --- .github/workflows/versions.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/versions.env b/.github/workflows/versions.env index 4d10c42f4..eaa595930 100644 --- a/.github/workflows/versions.env +++ b/.github/workflows/versions.env @@ -1,2 +1,2 @@ -FLUTTER_VERSION=3.22.2 +FLUTTER_VERSION=3.22.3 JAVA_VERSION=17 From 8ae8dbe45e6b58f68c8c5b3ef690bce3ba013954 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 28 Jul 2024 09:52:27 +0200 Subject: [PATCH 095/106] fix: Scroll to event missing the position --- lib/pages/chat/chat.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 2592f560c..ccfb1eb84 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -29,6 +29,7 @@ import 'package:fluffychat/pages/chat/recording_dialog.dart'; import 'package:fluffychat/pages/chat_details/chat_details.dart'; import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/app_lock.dart'; @@ -292,7 +293,7 @@ class ChatController extends State if (timeline?.events.any((event) => event.eventId == fullyRead) ?? false) { Logs().v('Scroll up to visible event', fullyRead); - setReadMarker(); + scrollToEventId(fullyRead); return; } if (!mounted) return; @@ -901,7 +902,10 @@ class ChatController extends State } void scrollToEventId(String eventId) async { - final eventIndex = timeline!.events.indexWhere((e) => e.eventId == eventId); + final eventIndex = timeline!.events + .where((event) => event.isVisibleInGui) + .toList() + .indexWhere((e) => e.eventId == eventId); if (eventIndex == -1) { setState(() { timeline = null; @@ -921,7 +925,8 @@ class ChatController extends State scrollToEventIdMarker = eventId; }); await scrollController.scrollToIndex( - eventIndex, + eventIndex + 1, + duration: FluffyThemes.animationDuration, preferPosition: AutoScrollPosition.middle, ); _updateScrollController(); From 5f9aa943390c9c587b2e6cf86f5ee56dee91ccff Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 28 Jul 2024 09:54:07 +0200 Subject: [PATCH 096/106] chore: Follow up highlight event on room open --- lib/pages/chat/chat.dart | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index ccfb1eb84..129bcb4ef 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -293,7 +293,7 @@ class ChatController extends State if (timeline?.events.any((event) => event.eventId == fullyRead) ?? false) { Logs().v('Scroll up to visible event', fullyRead); - scrollToEventId(fullyRead); + scrollToEventId(fullyRead, highlightEvent: false); return; } if (!mounted) return; @@ -901,7 +901,10 @@ class ChatController extends State inputFocus.requestFocus(); } - void scrollToEventId(String eventId) async { + void scrollToEventId( + String eventId, { + bool highlightEvent = true, + }) async { final eventIndex = timeline!.events .where((event) => event.isVisibleInGui) .toList() @@ -921,9 +924,11 @@ class ChatController extends State }); return; } - setState(() { - scrollToEventIdMarker = eventId; - }); + if (highlightEvent) { + setState(() { + scrollToEventIdMarker = eventId; + }); + } await scrollController.scrollToIndex( eventIndex + 1, duration: FluffyThemes.animationDuration, From 83490de6fd967ba8545d5960c0a6cebd410e0580 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 28 Jul 2024 14:02:18 +0200 Subject: [PATCH 097/106] fix: Path correct userId to ignore list --- lib/pages/settings_ignore_list/settings_ignore_list.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pages/settings_ignore_list/settings_ignore_list.dart b/lib/pages/settings_ignore_list/settings_ignore_list.dart index d64be058b..0468d267b 100644 --- a/lib/pages/settings_ignore_list/settings_ignore_list.dart +++ b/lib/pages/settings_ignore_list/settings_ignore_list.dart @@ -22,8 +22,9 @@ class SettingsIgnoreListController extends State { @override void initState() { super.initState(); - if (widget.initialUserId != null) { - controller.text = widget.initialUserId!.replaceAll('@', ''); + final initialUserId = widget.initialUserId; + if (initialUserId != null) { + controller.text = initialUserId; } } From 21e7c3f8cb3898306ba47788a962fba4ef24673d Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 29 Jul 2024 08:36:54 +0200 Subject: [PATCH 098/106] build: Update matrix dart sdk --- assets/l10n/intl_en.arb | 6 ++++++ lib/pages/settings/settings.dart | 2 -- lib/utils/matrix_sdk_extensions/matrix_locals.dart | 3 +++ pubspec.lock | 4 ++-- pubspec.yaml | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 7132187c1..30a8f9131 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2279,6 +2279,12 @@ "user": {} } }, + "invitedBy": "📩 Invited by {user}", + "@invitedBy": { + "placeholders": { + "user": {} + } + }, "youInvitedUser": "📩 You invited {user}", "@youInvitedUser": { "placeholders": { diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index 97bbec66d..d844063b1 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -209,8 +209,6 @@ class SettingsController extends State { final client = Matrix.of(context).client; profileFuture ??= client.getProfileFromUserId( client.userID!, - cache: !profileUpdated, - getFromRooms: !profileUpdated, ); return SettingsView(this); } diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index 5714baa22..cbba6b630 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -344,4 +344,7 @@ class MatrixLocals extends MatrixLocalizations { @override String startedKeyVerification(String senderName) => l10n.startedKeyVerification(senderName); + + @override + String invitedBy(String senderName) => l10n.invitedBy(senderName); } diff --git a/pubspec.lock b/pubspec.lock index 7e3909e54..c46a3944f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1210,10 +1210,10 @@ packages: dependency: "direct main" description: name: matrix - sha256: a27c2f73d28ea292e0f67f3d36396fb8acd7cfc97a07901dc7b22f46e082c3d6 + sha256: d1955846aaf5a5c6d353a90ce4133b9c99581cd64f4fe9e389e5f8b95157ca3b url: "https://pub.dev" source: hosted - version: "0.30.0" + version: "0.31.0" meta: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a013aeea3..69c80d6e1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,7 +64,7 @@ dependencies: keyboard_shortcuts: ^0.1.4 latlong2: ^0.9.1 linkify: ^5.0.0 - matrix: ^0.30.0 + matrix: ^0.31.0 native_imaging: ^0.1.1 package_info_plus: ^6.0.0 pasteboard: ^0.2.0 @@ -160,4 +160,4 @@ dependency_overrides: git: url: https://github.com/TheOneWithTheBraid/keyboard_shortcuts.git ref: null-safety - win32: 5.5.0 \ No newline at end of file + win32: 5.5.0 From e5bbb755d99c54ec051d66c9cdbf37b2f8568e18 Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 31 Jul 2024 15:23:25 +0200 Subject: [PATCH 099/106] design: Add snackbar with link to changelog on new version --- assets/l10n/intl_en.arb | 10 +++- lib/config/app_config.dart | 2 + lib/config/themes.dart | 3 -- lib/pages/chat_list/chat_list.dart | 2 + .../chat_list/client_chooser_button.dart | 6 ++- lib/utils/show_update_snackbar.dart | 52 +++++++++++++++++++ 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 lib/utils/show_update_snackbar.dart diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 30a8f9131..1ec5f8327 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2746,5 +2746,13 @@ "changeTheCanonicalRoomAlias": "Change the main public chat address", "sendRoomNotifications": "Send a @room notifications", "changeTheDescriptionOfTheGroup": "Change the description of the chat", - "chatPermissionsDescription": "Define which power level is necessary for certain actions in this chat. The power levels 0, 50 and 100 are usually representing users, moderators and admins, but any gradation is possible." + "chatPermissionsDescription": "Define which power level is necessary for certain actions in this chat. The power levels 0, 50 and 100 are usually representing users, moderators and admins, but any gradation is possible.", + "updateInstalled": "🎉 Update {version} installed!", + "@updateInstalled": { + "type": "text", + "placeholders": { + "version": {} + } + }, + "changelog": "Changelog" } diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 298b8743c..2c1ee1f4c 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -35,6 +35,8 @@ abstract class AppConfig { 'https://github.com/krille-chan/fluffychat'; static const String supportUrl = 'https://github.com/krille-chan/fluffychat/issues'; + static const String changelogUrl = + 'https://github.com/krille-chan/fluffychat/blob/main/CHANGELOG.md'; static final Uri newIssueUrl = Uri( scheme: 'https', host: 'github.com', diff --git a/lib/config/themes.dart b/lib/config/themes.dart index fc1ec0b4c..f83b69a2b 100644 --- a/lib/config/themes.dart +++ b/lib/config/themes.dart @@ -77,9 +77,6 @@ abstract class FluffyThemes { ? Typography.material2018().black.merge(fallbackTextTheme) : Typography.material2018().white.merge(fallbackTextTheme) : null, - snackBarTheme: const SnackBarThemeData( - behavior: SnackBarBehavior.floating, - ), dividerColor: brightness == Brightness.light ? Colors.blueGrey.shade50 : Colors.blueGrey.shade900, diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 99d31bf58..7b89f0997 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -21,6 +21,7 @@ import 'package:fluffychat/pages/chat_list/chat_list_view.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/show_update_snackbar.dart'; import 'package:fluffychat/widgets/avatar.dart'; import '../../../utils/account_bundles.dart'; import '../../config/setting_keys.dart'; @@ -511,6 +512,7 @@ class ChatListController extends State searchServer = Matrix.of(context).store.getString(_serverStoreNamespace); Matrix.of(context).backgroundPush?.setupPush(); + UpdateNotifier.showUpdateSnackBar(context); } // Workaround for system UI overlay style not applied on app start diff --git a/lib/pages/chat_list/client_chooser_button.dart b/lib/pages/chat_list/client_chooser_button.dart index d937b7cb1..c004bd167 100644 --- a/lib/pages/chat_list/client_chooser_button.dart +++ b/lib/pages/chat_list/client_chooser_button.dart @@ -68,7 +68,9 @@ class ClientChooserButton extends StatelessWidget { ], ), ), - PopupMenuItem( + // Currently disabled because of: + // https://github.com/matrix-org/matrix-react-sdk/pull/12286 + /*PopupMenuItem( value: SettingsAction.archive, child: Row( children: [ @@ -77,7 +79,7 @@ class ClientChooserButton extends StatelessWidget { Text(L10n.of(context)!.archive), ], ), - ), + ),*/ PopupMenuItem( value: SettingsAction.settings, child: Row( diff --git a/lib/utils/show_update_snackbar.dart b/lib/utils/show_update_snackbar.dart new file mode 100644 index 000000000..96d08378e --- /dev/null +++ b/lib/utils/show_update_snackbar.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +abstract class UpdateNotifier { + static const String versionStoreKey = 'last_known_version'; + + static void showUpdateSnackBar(BuildContext context) async { + final scaffoldMessenger = ScaffoldMessenger.of(context); + final currentVersion = await PlatformInfos.getVersion(); + final store = await SharedPreferences.getInstance(); + final storedVersion = store.getString(versionStoreKey); + + if (currentVersion != storedVersion) { + if (storedVersion != null) { + ScaffoldFeatureController? controller; + controller = scaffoldMessenger.showSnackBar( + SnackBar( + duration: const Duration(seconds: 30), + content: Row( + children: [ + IconButton( + icon: Icon( + Icons.close_outlined, + size: 20, + color: Theme.of(context).colorScheme.onPrimary, + ), + onPressed: () => controller?.close(), + ), + Expanded( + child: Text( + L10n.of(context)!.updateInstalled(currentVersion), + ), + ), + ], + ), + action: SnackBarAction( + label: L10n.of(context)!.changelog, + onPressed: () => launchUrlString(AppConfig.changelogUrl), + ), + ), + ); + } + await store.setString(versionStoreKey, currentVersion); + } + } +} From d3a13705bde9195d0c86825382d787493607a2d2 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 1 Aug 2024 09:18:12 +0200 Subject: [PATCH 100/106] refactor: Only initialize FlutterLocalNotificationsPlugin once --- lib/utils/background_push.dart | 4 +- lib/utils/push_helper.dart | 581 +++++++++++++++++---------------- 2 files changed, 299 insertions(+), 286 deletions(-) diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index 039dde895..a561ea371 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -71,7 +71,7 @@ class BackgroundPush { BackgroundPush._(this.client) { firebase?.setListeners( - onMessage: (message) => pushHelper( + onMessage: (message) => PushHelper.processNotification( PushNotification.fromJson( Map.from(message['data'] ?? message), ), @@ -393,7 +393,7 @@ class BackgroundPush { ); // UP may strip the devices list data['devices'] ??= []; - await pushHelper( + await PushHelper.processNotification( PushNotification.fromJson(data), client: client, l10n: l10n, diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart index edfdb4941..5a7e725ad 100644 --- a/lib/utils/push_helper.dart +++ b/lib/utils/push_helper.dart @@ -18,27 +18,20 @@ import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/voip/callkeep_manager.dart'; -Future pushHelper( - PushNotification notification, { - Client? client, - L10n? l10n, - String? activeRoomId, - void Function(NotificationResponse?)? onSelectNotification, -}) async { - try { - await _tryPushHelper( - notification, - client: client, - l10n: l10n, - activeRoomId: activeRoomId, - onSelectNotification: onSelectNotification, - ); - } catch (e, s) { - Logs().v('Push Helper has crashed!', e, s); +abstract class PushHelper { + static FlutterLocalNotificationsPlugin? _flutterLocalNotificationsPlugin; - // Initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project - final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); - await flutterLocalNotificationsPlugin.initialize( + static Future _getLocalNotificationsPlugin({ + void Function(NotificationResponse?)? onSelectNotification, + }) async { + var flutterlocalNotifcationsPlugin = _flutterLocalNotificationsPlugin; + if (flutterlocalNotifcationsPlugin != null) { + return flutterlocalNotifcationsPlugin; + } + + flutterlocalNotifcationsPlugin = + _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + await flutterlocalNotifcationsPlugin.initialize( const InitializationSettings( android: AndroidInitializationSettings('notifications_icon'), iOS: DarwinInitializationSettings(), @@ -46,299 +39,319 @@ Future pushHelper( onDidReceiveNotificationResponse: onSelectNotification, onDidReceiveBackgroundNotificationResponse: onSelectNotification, ); + return flutterlocalNotifcationsPlugin; + } - l10n ??= lookupL10n(const Locale('en')); - flutterLocalNotificationsPlugin.show( - notification.roomId?.hashCode ?? 0, - l10n.newMessageInFluffyChat, - l10n.openAppToReadMessages, - NotificationDetails( - iOS: const DarwinNotificationDetails(), - android: AndroidNotificationDetails( - AppConfig.pushNotificationsChannelId, - l10n.incomingMessages, - number: notification.counts?.unread, - ticker: l10n.unreadChatsInApp( - AppConfig.applicationName, - (notification.counts?.unread ?? 0).toString(), + static Future processNotification( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + void Function(NotificationResponse?)? onSelectNotification, + }) async { + try { + await _tryPushHelper( + notification, + client: client, + l10n: l10n, + activeRoomId: activeRoomId, + onSelectNotification: onSelectNotification, + ); + } catch (e, s) { + Logs().v('Push Helper has crashed!', e, s); + + final flutterLocalNotificationsPlugin = + await _getLocalNotificationsPlugin( + onSelectNotification: onSelectNotification, + ); + + l10n ??= lookupL10n(const Locale('en')); + flutterLocalNotificationsPlugin.show( + notification.roomId?.hashCode ?? 0, + l10n.newMessageInFluffyChat, + l10n.openAppToReadMessages, + NotificationDetails( + iOS: const DarwinNotificationDetails(), + android: AndroidNotificationDetails( + AppConfig.pushNotificationsChannelId, + l10n.incomingMessages, + number: notification.counts?.unread, + ticker: l10n.unreadChatsInApp( + AppConfig.applicationName, + (notification.counts?.unread ?? 0).toString(), + ), + importance: Importance.high, + priority: Priority.max, + shortcutId: notification.roomId, ), - importance: Importance.high, - priority: Priority.max, - shortcutId: notification.roomId, ), - ), + ); + rethrow; + } + } + + static Future _tryPushHelper( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + void Function(NotificationResponse?)? onSelectNotification, + }) async { + final isBackgroundMessage = client == null; + Logs().v( + 'Push helper has been started (background=$isBackgroundMessage).', + notification.toJson(), ); - rethrow; - } -} -Future _tryPushHelper( - PushNotification notification, { - Client? client, - L10n? l10n, - String? activeRoomId, - void Function(NotificationResponse?)? onSelectNotification, -}) async { - final isBackgroundMessage = client == null; - Logs().v( - 'Push helper has been started (background=$isBackgroundMessage).', - notification.toJson(), - ); + if (notification.roomId != null && + activeRoomId == notification.roomId && + WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { + Logs().v('Room is in foreground. Stop push helper here.'); + return; + } - if (notification.roomId != null && - activeRoomId == notification.roomId && - WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { - Logs().v('Room is in foreground. Stop push helper here.'); - return; - } + final flutterLocalNotificationsPlugin = await _getLocalNotificationsPlugin( + onSelectNotification: onSelectNotification, + ); - // Initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project - final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); - await flutterLocalNotificationsPlugin.initialize( - const InitializationSettings( - android: AndroidInitializationSettings('notifications_icon'), - iOS: DarwinInitializationSettings(), - ), - onDidReceiveNotificationResponse: onSelectNotification, - //onDidReceiveBackgroundNotificationResponse: onSelectNotification, - ); + client ??= (await ClientManager.getClients( + initialize: false, + store: await SharedPreferences.getInstance(), + )) + .first; + final event = await client.getEventByPushNotification( + notification, + storeInDatabase: isBackgroundMessage, + ); - client ??= (await ClientManager.getClients( - initialize: false, - store: await SharedPreferences.getInstance(), - )) - .first; - final event = await client.getEventByPushNotification( - notification, - storeInDatabase: isBackgroundMessage, - ); - - if (event == null) { - Logs().v('Notification is a clearing indicator.'); - if (notification.counts?.unread == null || - notification.counts?.unread == 0) { - await flutterLocalNotificationsPlugin.cancelAll(); - } else { - // Make sure client is fully loaded and synced before dismiss notifications: - await client.roomsLoading; - await client.oneShotSync(); - final activeNotifications = - await flutterLocalNotificationsPlugin.getActiveNotifications(); - for (final activeNotification in activeNotifications) { - final room = client.rooms.singleWhereOrNull( - (room) => room.id.hashCode == activeNotification.id, - ); - if (room == null || !room.isUnreadOrInvited) { - flutterLocalNotificationsPlugin.cancel(activeNotification.id!); + if (event == null) { + Logs().v('Notification is a clearing indicator.'); + if (notification.counts?.unread == null || + notification.counts?.unread == 0) { + await flutterLocalNotificationsPlugin.cancelAll(); + } else { + // Make sure client is fully loaded and synced before dismiss notifications: + await client.roomsLoading; + await client.oneShotSync(); + final activeNotifications = + await flutterLocalNotificationsPlugin.getActiveNotifications(); + for (final activeNotification in activeNotifications) { + final room = client.rooms.singleWhereOrNull( + (room) => room.id.hashCode == activeNotification.id, + ); + if (room == null || !room.isUnreadOrInvited) { + flutterLocalNotificationsPlugin.cancel(activeNotification.id!); + } } } + return; } - return; - } - Logs().v('Push helper got notification event of type ${event.type}.'); + Logs().v('Push helper got notification event of type ${event.type}.'); - if (event.type.startsWith('m.call')) { - // make sure bg sync is on (needed to update hold, unhold events) - // prevent over write from app life cycle change - client.backgroundSync = true; - } + if (event.type.startsWith('m.call')) { + // make sure bg sync is on (needed to update hold, unhold events) + // prevent over write from app life cycle change + client.backgroundSync = true; + } - if (event.type == EventTypes.CallInvite) { - CallKeepManager().initialize(); - } else if (event.type == EventTypes.CallHangup) { - client.backgroundSync = false; - } + if (event.type == EventTypes.CallInvite) { + CallKeepManager().initialize(); + } else if (event.type == EventTypes.CallHangup) { + client.backgroundSync = false; + } - if (event.type.startsWith('m.call') && event.type != EventTypes.CallInvite) { - Logs().v('Push message is a m.call but not invite. Do not display.'); - return; - } + if (event.type.startsWith('m.call') && + event.type != EventTypes.CallInvite) { + Logs().v('Push message is a m.call but not invite. Do not display.'); + return; + } - if ((event.type.startsWith('m.call') && - event.type != EventTypes.CallInvite) || - event.type == 'org.matrix.call.sdp_stream_metadata_changed') { - Logs().v('Push message was for a call, but not call invite.'); - return; - } + if ((event.type.startsWith('m.call') && + event.type != EventTypes.CallInvite) || + event.type == 'org.matrix.call.sdp_stream_metadata_changed') { + Logs().v('Push message was for a call, but not call invite.'); + return; + } - l10n ??= await L10n.delegate.load(PlatformDispatcher.instance.locale); - final matrixLocals = MatrixLocals(l10n); + l10n ??= await L10n.delegate.load(PlatformDispatcher.instance.locale); + final matrixLocals = MatrixLocals(l10n); - // Calculate the body - final body = event.type == EventTypes.Encrypted - ? l10n.newMessageInFluffyChat - : await event.calcLocalizedBody( - matrixLocals, - plaintextBody: true, - withSenderNamePrefix: false, - hideReply: true, - hideEdit: true, - removeMarkdown: true, - ); + // Calculate the body + final body = event.type == EventTypes.Encrypted + ? l10n.newMessageInFluffyChat + : await event.calcLocalizedBody( + matrixLocals, + plaintextBody: true, + withSenderNamePrefix: false, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ); - // The person object for the android message style notification - final avatar = event.room.avatar - ?.getThumbnail( - client, - width: 256, - height: 256, - ) - .toString(); - final senderAvatar = event.room.isDirectChat - ? avatar - : event.senderFromMemoryOrFallback.avatarUrl - ?.getThumbnail( - client, - width: 256, - height: 256, - ) - .toString(); + // The person object for the android message style notification + final avatar = event.room.avatar + ?.getThumbnail( + client, + width: 256, + height: 256, + ) + .toString(); + final senderAvatar = event.room.isDirectChat + ? avatar + : event.senderFromMemoryOrFallback.avatarUrl + ?.getThumbnail( + client, + width: 256, + height: 256, + ) + .toString(); - File? roomAvatarFile, senderAvatarFile; - try { - roomAvatarFile = avatar == null - ? null - : await DefaultCacheManager().getSingleFile(avatar); - } catch (e, s) { - Logs().e('Unable to get avatar picture', e, s); - } - try { - senderAvatarFile = event.room.isDirectChat - ? roomAvatarFile - : senderAvatar == null + File? roomAvatarFile, senderAvatarFile; + try { + roomAvatarFile = avatar == null + ? null + : await DefaultCacheManager().getSingleFile(avatar); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + try { + senderAvatarFile = event.room.isDirectChat + ? roomAvatarFile + : senderAvatar == null + ? null + : await DefaultCacheManager().getSingleFile(senderAvatar); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + + final id = notification.roomId.hashCode; + + // Show notification + + final newMessage = Message( + body, + event.originServerTs, + Person( + bot: event.messageType == MessageTypes.Notice, + key: event.senderId, + name: event.senderFromMemoryOrFallback.calcDisplayname(), + icon: senderAvatarFile == null ? null - : await DefaultCacheManager().getSingleFile(senderAvatar); - } catch (e, s) { - Logs().e('Unable to get avatar picture', e, s); - } + : BitmapFilePathAndroidIcon(senderAvatarFile.path), + ), + ); - final id = notification.roomId.hashCode; + final messagingStyleInformation = PlatformInfos.isAndroid + ? await AndroidFlutterLocalNotificationsPlugin() + .getActiveNotificationMessagingStyle(id) + : null; + messagingStyleInformation?.messages?.add(newMessage); - // Show notification + final roomName = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); - final newMessage = Message( - body, - event.originServerTs, - Person( - bot: event.messageType == MessageTypes.Notice, - key: event.senderId, - name: event.senderFromMemoryOrFallback.calcDisplayname(), - icon: senderAvatarFile == null - ? null - : BitmapFilePathAndroidIcon(senderAvatarFile.path), - ), - ); + final notificationGroupId = + event.room.isDirectChat ? 'directChats' : 'groupChats'; + final groupName = event.room.isDirectChat ? l10n.directChats : l10n.groups; - final messagingStyleInformation = PlatformInfos.isAndroid - ? await AndroidFlutterLocalNotificationsPlugin() - .getActiveNotificationMessagingStyle(id) - : null; - messagingStyleInformation?.messages?.add(newMessage); + final messageRooms = AndroidNotificationChannelGroup( + notificationGroupId, + groupName, + ); + final roomsChannel = AndroidNotificationChannel( + event.room.id, + roomName, + groupId: notificationGroupId, + ); - final roomName = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); + await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannelGroup(messageRooms); + await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannel(roomsChannel); - final notificationGroupId = - event.room.isDirectChat ? 'directChats' : 'groupChats'; - final groupName = event.room.isDirectChat ? l10n.directChats : l10n.groups; - - final messageRooms = AndroidNotificationChannelGroup( - notificationGroupId, - groupName, - ); - final roomsChannel = AndroidNotificationChannel( - event.room.id, - roomName, - groupId: notificationGroupId, - ); - - await flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - AndroidFlutterLocalNotificationsPlugin>() - ?.createNotificationChannelGroup(messageRooms); - await flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - AndroidFlutterLocalNotificationsPlugin>() - ?.createNotificationChannel(roomsChannel); - - final androidPlatformChannelSpecifics = AndroidNotificationDetails( - AppConfig.pushNotificationsChannelId, - l10n.incomingMessages, - number: notification.counts?.unread, - category: AndroidNotificationCategory.message, - shortcutId: event.room.id, - styleInformation: messagingStyleInformation ?? - MessagingStyleInformation( - Person( - name: event.senderFromMemoryOrFallback.calcDisplayname(), - icon: roomAvatarFile == null - ? null - : BitmapFilePathAndroidIcon(roomAvatarFile.path), - key: event.roomId, - important: event.room.isFavourite, + final androidPlatformChannelSpecifics = AndroidNotificationDetails( + AppConfig.pushNotificationsChannelId, + l10n.incomingMessages, + number: notification.counts?.unread, + category: AndroidNotificationCategory.message, + shortcutId: event.room.id, + styleInformation: messagingStyleInformation ?? + MessagingStyleInformation( + Person( + name: event.senderFromMemoryOrFallback.calcDisplayname(), + icon: roomAvatarFile == null + ? null + : BitmapFilePathAndroidIcon(roomAvatarFile.path), + key: event.roomId, + important: event.room.isFavourite, + ), + conversationTitle: roomName, + groupConversation: !event.room.isDirectChat, + messages: [newMessage], ), - conversationTitle: roomName, - groupConversation: !event.room.isDirectChat, - messages: [newMessage], - ), - ticker: event.calcLocalizedBodyFallback( - matrixLocals, - plaintextBody: true, - withSenderNamePrefix: true, - hideReply: true, - hideEdit: true, - removeMarkdown: true, - ), - importance: Importance.high, - priority: Priority.max, - groupKey: notificationGroupId, - ); - const iOSPlatformChannelSpecifics = DarwinNotificationDetails(); - final platformChannelSpecifics = NotificationDetails( - android: androidPlatformChannelSpecifics, - iOS: iOSPlatformChannelSpecifics, - ); + ticker: event.calcLocalizedBodyFallback( + matrixLocals, + plaintextBody: true, + withSenderNamePrefix: true, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ), + importance: Importance.high, + priority: Priority.max, + groupKey: notificationGroupId, + ); + const iOSPlatformChannelSpecifics = DarwinNotificationDetails(); + final platformChannelSpecifics = NotificationDetails( + android: androidPlatformChannelSpecifics, + iOS: iOSPlatformChannelSpecifics, + ); - final title = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); + final title = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); - if (PlatformInfos.isAndroid && messagingStyleInformation == null) { - await _setShortcut(event, l10n, title, roomAvatarFile); + if (PlatformInfos.isAndroid && messagingStyleInformation == null) { + await _setShortcut(event, l10n, title, roomAvatarFile); + } + + await flutterLocalNotificationsPlugin.show( + id, + title, + body, + platformChannelSpecifics, + payload: event.roomId, + ); + Logs().v('Push helper has been completed!'); } - await flutterLocalNotificationsPlugin.show( - id, - title, - body, - platformChannelSpecifics, - payload: event.roomId, - ); - Logs().v('Push helper has been completed!'); -} - -/// Creates a shortcut for Android platform but does not block displaying the -/// notification. This is optional but provides a nicer view of the -/// notification popup. -Future _setShortcut( - Event event, - L10n l10n, - String title, - File? avatarFile, -) async { - final flutterShortcuts = FlutterShortcuts(); - await flutterShortcuts.initialize(debug: !kReleaseMode); - await flutterShortcuts.pushShortcutItem( - shortcut: ShortcutItem( - id: event.room.id, - action: AppConfig.inviteLinkPrefix + event.room.id, - shortLabel: title, - conversationShortcut: true, - icon: avatarFile == null - ? null - : ShortcutMemoryIcon(jpegImage: await avatarFile.readAsBytes()) - .toString(), - shortcutIconAsset: avatarFile == null - ? ShortcutIconAsset.androidAsset - : ShortcutIconAsset.memoryAsset, - isImportant: event.room.isFavourite, - ), - ); + /// Creates a shortcut for Android platform but does not block displaying the + /// notification. This is optional but provides a nicer view of the + /// notification popup. + static Future _setShortcut( + Event event, + L10n l10n, + String title, + File? avatarFile, + ) async { + final flutterShortcuts = FlutterShortcuts(); + await flutterShortcuts.initialize(debug: !kReleaseMode); + await flutterShortcuts.pushShortcutItem( + shortcut: ShortcutItem( + id: event.room.id, + action: AppConfig.inviteLinkPrefix + event.room.id, + shortLabel: title, + conversationShortcut: true, + icon: avatarFile == null + ? null + : ShortcutMemoryIcon(jpegImage: await avatarFile.readAsBytes()) + .toString(), + shortcutIconAsset: avatarFile == null + ? ShortcutIconAsset.androidAsset + : ShortcutIconAsset.memoryAsset, + isImportant: event.room.isFavourite, + ), + ); + } } From a928ecec1e0272417fa35ef97112032e6de184f0 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 1 Aug 2024 09:47:49 +0200 Subject: [PATCH 101/106] Revert "refactor: Only initialize FlutterLocalNotificationsPlugin once" This reverts commit d3a13705bde9195d0c86825382d787493607a2d2. --- lib/utils/background_push.dart | 4 +- lib/utils/push_helper.dart | 631 ++++++++++++++++----------------- 2 files changed, 311 insertions(+), 324 deletions(-) diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index a561ea371..039dde895 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -71,7 +71,7 @@ class BackgroundPush { BackgroundPush._(this.client) { firebase?.setListeners( - onMessage: (message) => PushHelper.processNotification( + onMessage: (message) => pushHelper( PushNotification.fromJson( Map.from(message['data'] ?? message), ), @@ -393,7 +393,7 @@ class BackgroundPush { ); // UP may strip the devices list data['devices'] ??= []; - await PushHelper.processNotification( + await pushHelper( PushNotification.fromJson(data), client: client, l10n: l10n, diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart index 5a7e725ad..edfdb4941 100644 --- a/lib/utils/push_helper.dart +++ b/lib/utils/push_helper.dart @@ -18,20 +18,27 @@ import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/voip/callkeep_manager.dart'; -abstract class PushHelper { - static FlutterLocalNotificationsPlugin? _flutterLocalNotificationsPlugin; +Future pushHelper( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + void Function(NotificationResponse?)? onSelectNotification, +}) async { + try { + await _tryPushHelper( + notification, + client: client, + l10n: l10n, + activeRoomId: activeRoomId, + onSelectNotification: onSelectNotification, + ); + } catch (e, s) { + Logs().v('Push Helper has crashed!', e, s); - static Future _getLocalNotificationsPlugin({ - void Function(NotificationResponse?)? onSelectNotification, - }) async { - var flutterlocalNotifcationsPlugin = _flutterLocalNotificationsPlugin; - if (flutterlocalNotifcationsPlugin != null) { - return flutterlocalNotifcationsPlugin; - } - - flutterlocalNotifcationsPlugin = - _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); - await flutterlocalNotifcationsPlugin.initialize( + // Initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project + final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + await flutterLocalNotificationsPlugin.initialize( const InitializationSettings( android: AndroidInitializationSettings('notifications_icon'), iOS: DarwinInitializationSettings(), @@ -39,319 +46,299 @@ abstract class PushHelper { onDidReceiveNotificationResponse: onSelectNotification, onDidReceiveBackgroundNotificationResponse: onSelectNotification, ); - return flutterlocalNotifcationsPlugin; - } - static Future processNotification( - PushNotification notification, { - Client? client, - L10n? l10n, - String? activeRoomId, - void Function(NotificationResponse?)? onSelectNotification, - }) async { - try { - await _tryPushHelper( - notification, - client: client, - l10n: l10n, - activeRoomId: activeRoomId, - onSelectNotification: onSelectNotification, - ); - } catch (e, s) { - Logs().v('Push Helper has crashed!', e, s); - - final flutterLocalNotificationsPlugin = - await _getLocalNotificationsPlugin( - onSelectNotification: onSelectNotification, - ); - - l10n ??= lookupL10n(const Locale('en')); - flutterLocalNotificationsPlugin.show( - notification.roomId?.hashCode ?? 0, - l10n.newMessageInFluffyChat, - l10n.openAppToReadMessages, - NotificationDetails( - iOS: const DarwinNotificationDetails(), - android: AndroidNotificationDetails( - AppConfig.pushNotificationsChannelId, - l10n.incomingMessages, - number: notification.counts?.unread, - ticker: l10n.unreadChatsInApp( - AppConfig.applicationName, - (notification.counts?.unread ?? 0).toString(), - ), - importance: Importance.high, - priority: Priority.max, - shortcutId: notification.roomId, + l10n ??= lookupL10n(const Locale('en')); + flutterLocalNotificationsPlugin.show( + notification.roomId?.hashCode ?? 0, + l10n.newMessageInFluffyChat, + l10n.openAppToReadMessages, + NotificationDetails( + iOS: const DarwinNotificationDetails(), + android: AndroidNotificationDetails( + AppConfig.pushNotificationsChannelId, + l10n.incomingMessages, + number: notification.counts?.unread, + ticker: l10n.unreadChatsInApp( + AppConfig.applicationName, + (notification.counts?.unread ?? 0).toString(), ), + importance: Importance.high, + priority: Priority.max, + shortcutId: notification.roomId, ), - ); - rethrow; - } - } - - static Future _tryPushHelper( - PushNotification notification, { - Client? client, - L10n? l10n, - String? activeRoomId, - void Function(NotificationResponse?)? onSelectNotification, - }) async { - final isBackgroundMessage = client == null; - Logs().v( - 'Push helper has been started (background=$isBackgroundMessage).', - notification.toJson(), - ); - - if (notification.roomId != null && - activeRoomId == notification.roomId && - WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { - Logs().v('Room is in foreground. Stop push helper here.'); - return; - } - - final flutterLocalNotificationsPlugin = await _getLocalNotificationsPlugin( - onSelectNotification: onSelectNotification, - ); - - client ??= (await ClientManager.getClients( - initialize: false, - store: await SharedPreferences.getInstance(), - )) - .first; - final event = await client.getEventByPushNotification( - notification, - storeInDatabase: isBackgroundMessage, - ); - - if (event == null) { - Logs().v('Notification is a clearing indicator.'); - if (notification.counts?.unread == null || - notification.counts?.unread == 0) { - await flutterLocalNotificationsPlugin.cancelAll(); - } else { - // Make sure client is fully loaded and synced before dismiss notifications: - await client.roomsLoading; - await client.oneShotSync(); - final activeNotifications = - await flutterLocalNotificationsPlugin.getActiveNotifications(); - for (final activeNotification in activeNotifications) { - final room = client.rooms.singleWhereOrNull( - (room) => room.id.hashCode == activeNotification.id, - ); - if (room == null || !room.isUnreadOrInvited) { - flutterLocalNotificationsPlugin.cancel(activeNotification.id!); - } - } - } - return; - } - Logs().v('Push helper got notification event of type ${event.type}.'); - - if (event.type.startsWith('m.call')) { - // make sure bg sync is on (needed to update hold, unhold events) - // prevent over write from app life cycle change - client.backgroundSync = true; - } - - if (event.type == EventTypes.CallInvite) { - CallKeepManager().initialize(); - } else if (event.type == EventTypes.CallHangup) { - client.backgroundSync = false; - } - - if (event.type.startsWith('m.call') && - event.type != EventTypes.CallInvite) { - Logs().v('Push message is a m.call but not invite. Do not display.'); - return; - } - - if ((event.type.startsWith('m.call') && - event.type != EventTypes.CallInvite) || - event.type == 'org.matrix.call.sdp_stream_metadata_changed') { - Logs().v('Push message was for a call, but not call invite.'); - return; - } - - l10n ??= await L10n.delegate.load(PlatformDispatcher.instance.locale); - final matrixLocals = MatrixLocals(l10n); - - // Calculate the body - final body = event.type == EventTypes.Encrypted - ? l10n.newMessageInFluffyChat - : await event.calcLocalizedBody( - matrixLocals, - plaintextBody: true, - withSenderNamePrefix: false, - hideReply: true, - hideEdit: true, - removeMarkdown: true, - ); - - // The person object for the android message style notification - final avatar = event.room.avatar - ?.getThumbnail( - client, - width: 256, - height: 256, - ) - .toString(); - final senderAvatar = event.room.isDirectChat - ? avatar - : event.senderFromMemoryOrFallback.avatarUrl - ?.getThumbnail( - client, - width: 256, - height: 256, - ) - .toString(); - - File? roomAvatarFile, senderAvatarFile; - try { - roomAvatarFile = avatar == null - ? null - : await DefaultCacheManager().getSingleFile(avatar); - } catch (e, s) { - Logs().e('Unable to get avatar picture', e, s); - } - try { - senderAvatarFile = event.room.isDirectChat - ? roomAvatarFile - : senderAvatar == null - ? null - : await DefaultCacheManager().getSingleFile(senderAvatar); - } catch (e, s) { - Logs().e('Unable to get avatar picture', e, s); - } - - final id = notification.roomId.hashCode; - - // Show notification - - final newMessage = Message( - body, - event.originServerTs, - Person( - bot: event.messageType == MessageTypes.Notice, - key: event.senderId, - name: event.senderFromMemoryOrFallback.calcDisplayname(), - icon: senderAvatarFile == null - ? null - : BitmapFilePathAndroidIcon(senderAvatarFile.path), - ), - ); - - final messagingStyleInformation = PlatformInfos.isAndroid - ? await AndroidFlutterLocalNotificationsPlugin() - .getActiveNotificationMessagingStyle(id) - : null; - messagingStyleInformation?.messages?.add(newMessage); - - final roomName = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); - - final notificationGroupId = - event.room.isDirectChat ? 'directChats' : 'groupChats'; - final groupName = event.room.isDirectChat ? l10n.directChats : l10n.groups; - - final messageRooms = AndroidNotificationChannelGroup( - notificationGroupId, - groupName, - ); - final roomsChannel = AndroidNotificationChannel( - event.room.id, - roomName, - groupId: notificationGroupId, - ); - - await flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - AndroidFlutterLocalNotificationsPlugin>() - ?.createNotificationChannelGroup(messageRooms); - await flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - AndroidFlutterLocalNotificationsPlugin>() - ?.createNotificationChannel(roomsChannel); - - final androidPlatformChannelSpecifics = AndroidNotificationDetails( - AppConfig.pushNotificationsChannelId, - l10n.incomingMessages, - number: notification.counts?.unread, - category: AndroidNotificationCategory.message, - shortcutId: event.room.id, - styleInformation: messagingStyleInformation ?? - MessagingStyleInformation( - Person( - name: event.senderFromMemoryOrFallback.calcDisplayname(), - icon: roomAvatarFile == null - ? null - : BitmapFilePathAndroidIcon(roomAvatarFile.path), - key: event.roomId, - important: event.room.isFavourite, - ), - conversationTitle: roomName, - groupConversation: !event.room.isDirectChat, - messages: [newMessage], - ), - ticker: event.calcLocalizedBodyFallback( - matrixLocals, - plaintextBody: true, - withSenderNamePrefix: true, - hideReply: true, - hideEdit: true, - removeMarkdown: true, - ), - importance: Importance.high, - priority: Priority.max, - groupKey: notificationGroupId, - ); - const iOSPlatformChannelSpecifics = DarwinNotificationDetails(); - final platformChannelSpecifics = NotificationDetails( - android: androidPlatformChannelSpecifics, - iOS: iOSPlatformChannelSpecifics, - ); - - final title = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); - - if (PlatformInfos.isAndroid && messagingStyleInformation == null) { - await _setShortcut(event, l10n, title, roomAvatarFile); - } - - await flutterLocalNotificationsPlugin.show( - id, - title, - body, - platformChannelSpecifics, - payload: event.roomId, - ); - Logs().v('Push helper has been completed!'); - } - - /// Creates a shortcut for Android platform but does not block displaying the - /// notification. This is optional but provides a nicer view of the - /// notification popup. - static Future _setShortcut( - Event event, - L10n l10n, - String title, - File? avatarFile, - ) async { - final flutterShortcuts = FlutterShortcuts(); - await flutterShortcuts.initialize(debug: !kReleaseMode); - await flutterShortcuts.pushShortcutItem( - shortcut: ShortcutItem( - id: event.room.id, - action: AppConfig.inviteLinkPrefix + event.room.id, - shortLabel: title, - conversationShortcut: true, - icon: avatarFile == null - ? null - : ShortcutMemoryIcon(jpegImage: await avatarFile.readAsBytes()) - .toString(), - shortcutIconAsset: avatarFile == null - ? ShortcutIconAsset.androidAsset - : ShortcutIconAsset.memoryAsset, - isImportant: event.room.isFavourite, ), ); + rethrow; } } + +Future _tryPushHelper( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + void Function(NotificationResponse?)? onSelectNotification, +}) async { + final isBackgroundMessage = client == null; + Logs().v( + 'Push helper has been started (background=$isBackgroundMessage).', + notification.toJson(), + ); + + if (notification.roomId != null && + activeRoomId == notification.roomId && + WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { + Logs().v('Room is in foreground. Stop push helper here.'); + return; + } + + // Initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project + final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + await flutterLocalNotificationsPlugin.initialize( + const InitializationSettings( + android: AndroidInitializationSettings('notifications_icon'), + iOS: DarwinInitializationSettings(), + ), + onDidReceiveNotificationResponse: onSelectNotification, + //onDidReceiveBackgroundNotificationResponse: onSelectNotification, + ); + + client ??= (await ClientManager.getClients( + initialize: false, + store: await SharedPreferences.getInstance(), + )) + .first; + final event = await client.getEventByPushNotification( + notification, + storeInDatabase: isBackgroundMessage, + ); + + if (event == null) { + Logs().v('Notification is a clearing indicator.'); + if (notification.counts?.unread == null || + notification.counts?.unread == 0) { + await flutterLocalNotificationsPlugin.cancelAll(); + } else { + // Make sure client is fully loaded and synced before dismiss notifications: + await client.roomsLoading; + await client.oneShotSync(); + final activeNotifications = + await flutterLocalNotificationsPlugin.getActiveNotifications(); + for (final activeNotification in activeNotifications) { + final room = client.rooms.singleWhereOrNull( + (room) => room.id.hashCode == activeNotification.id, + ); + if (room == null || !room.isUnreadOrInvited) { + flutterLocalNotificationsPlugin.cancel(activeNotification.id!); + } + } + } + return; + } + Logs().v('Push helper got notification event of type ${event.type}.'); + + if (event.type.startsWith('m.call')) { + // make sure bg sync is on (needed to update hold, unhold events) + // prevent over write from app life cycle change + client.backgroundSync = true; + } + + if (event.type == EventTypes.CallInvite) { + CallKeepManager().initialize(); + } else if (event.type == EventTypes.CallHangup) { + client.backgroundSync = false; + } + + if (event.type.startsWith('m.call') && event.type != EventTypes.CallInvite) { + Logs().v('Push message is a m.call but not invite. Do not display.'); + return; + } + + if ((event.type.startsWith('m.call') && + event.type != EventTypes.CallInvite) || + event.type == 'org.matrix.call.sdp_stream_metadata_changed') { + Logs().v('Push message was for a call, but not call invite.'); + return; + } + + l10n ??= await L10n.delegate.load(PlatformDispatcher.instance.locale); + final matrixLocals = MatrixLocals(l10n); + + // Calculate the body + final body = event.type == EventTypes.Encrypted + ? l10n.newMessageInFluffyChat + : await event.calcLocalizedBody( + matrixLocals, + plaintextBody: true, + withSenderNamePrefix: false, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ); + + // The person object for the android message style notification + final avatar = event.room.avatar + ?.getThumbnail( + client, + width: 256, + height: 256, + ) + .toString(); + final senderAvatar = event.room.isDirectChat + ? avatar + : event.senderFromMemoryOrFallback.avatarUrl + ?.getThumbnail( + client, + width: 256, + height: 256, + ) + .toString(); + + File? roomAvatarFile, senderAvatarFile; + try { + roomAvatarFile = avatar == null + ? null + : await DefaultCacheManager().getSingleFile(avatar); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + try { + senderAvatarFile = event.room.isDirectChat + ? roomAvatarFile + : senderAvatar == null + ? null + : await DefaultCacheManager().getSingleFile(senderAvatar); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + + final id = notification.roomId.hashCode; + + // Show notification + + final newMessage = Message( + body, + event.originServerTs, + Person( + bot: event.messageType == MessageTypes.Notice, + key: event.senderId, + name: event.senderFromMemoryOrFallback.calcDisplayname(), + icon: senderAvatarFile == null + ? null + : BitmapFilePathAndroidIcon(senderAvatarFile.path), + ), + ); + + final messagingStyleInformation = PlatformInfos.isAndroid + ? await AndroidFlutterLocalNotificationsPlugin() + .getActiveNotificationMessagingStyle(id) + : null; + messagingStyleInformation?.messages?.add(newMessage); + + final roomName = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); + + final notificationGroupId = + event.room.isDirectChat ? 'directChats' : 'groupChats'; + final groupName = event.room.isDirectChat ? l10n.directChats : l10n.groups; + + final messageRooms = AndroidNotificationChannelGroup( + notificationGroupId, + groupName, + ); + final roomsChannel = AndroidNotificationChannel( + event.room.id, + roomName, + groupId: notificationGroupId, + ); + + await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannelGroup(messageRooms); + await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.createNotificationChannel(roomsChannel); + + final androidPlatformChannelSpecifics = AndroidNotificationDetails( + AppConfig.pushNotificationsChannelId, + l10n.incomingMessages, + number: notification.counts?.unread, + category: AndroidNotificationCategory.message, + shortcutId: event.room.id, + styleInformation: messagingStyleInformation ?? + MessagingStyleInformation( + Person( + name: event.senderFromMemoryOrFallback.calcDisplayname(), + icon: roomAvatarFile == null + ? null + : BitmapFilePathAndroidIcon(roomAvatarFile.path), + key: event.roomId, + important: event.room.isFavourite, + ), + conversationTitle: roomName, + groupConversation: !event.room.isDirectChat, + messages: [newMessage], + ), + ticker: event.calcLocalizedBodyFallback( + matrixLocals, + plaintextBody: true, + withSenderNamePrefix: true, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ), + importance: Importance.high, + priority: Priority.max, + groupKey: notificationGroupId, + ); + const iOSPlatformChannelSpecifics = DarwinNotificationDetails(); + final platformChannelSpecifics = NotificationDetails( + android: androidPlatformChannelSpecifics, + iOS: iOSPlatformChannelSpecifics, + ); + + final title = event.room.getLocalizedDisplayname(MatrixLocals(l10n)); + + if (PlatformInfos.isAndroid && messagingStyleInformation == null) { + await _setShortcut(event, l10n, title, roomAvatarFile); + } + + await flutterLocalNotificationsPlugin.show( + id, + title, + body, + platformChannelSpecifics, + payload: event.roomId, + ); + Logs().v('Push helper has been completed!'); +} + +/// Creates a shortcut for Android platform but does not block displaying the +/// notification. This is optional but provides a nicer view of the +/// notification popup. +Future _setShortcut( + Event event, + L10n l10n, + String title, + File? avatarFile, +) async { + final flutterShortcuts = FlutterShortcuts(); + await flutterShortcuts.initialize(debug: !kReleaseMode); + await flutterShortcuts.pushShortcutItem( + shortcut: ShortcutItem( + id: event.room.id, + action: AppConfig.inviteLinkPrefix + event.room.id, + shortLabel: title, + conversationShortcut: true, + icon: avatarFile == null + ? null + : ShortcutMemoryIcon(jpegImage: await avatarFile.readAsBytes()) + .toString(), + shortcutIconAsset: avatarFile == null + ? ShortcutIconAsset.androidAsset + : ShortcutIconAsset.memoryAsset, + isImportant: event.room.isFavourite, + ), + ); +} From 3f02c5010b62c3a51ee8f43d6aa8a6a9e3722abb Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 4 Aug 2024 16:50:37 +0200 Subject: [PATCH 102/106] refactor: Migrate android gradle plugin --- android/app/build.gradle | 19 ++-- android/build.gradle | 14 --- android/settings.gradle | 31 +++++-- scripts/enable-android-google-services.patch | 91 +++++++------------- 4 files changed, 63 insertions(+), 92 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index fba1b5189..7520ff2ab 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,10 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" + //id "com.google.gms.google-services" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +13,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,10 +23,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { @@ -85,9 +83,6 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 implementation 'androidx.multidex:multidex:2.0.1' } - -//apply plugin: 'com.google.gms.google-services' diff --git a/android/build.gradle b/android/build.gradle index a8c597ff1..bc157bd1a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,17 +1,3 @@ -buildscript { - ext.kotlin_version = '1.8.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - //classpath 'com.google.gms:google-services:4.3.8' - } -} - allprojects { repositories { google() diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bcf0..b2fd960a7 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,26 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.1.2" apply false + id "org.jetbrains.kotlin.android" version "1.8.0" apply false + // id "com.google.gms.google-services" version "4.3.8" apply false +} + +include ":app" \ No newline at end of file diff --git a/scripts/enable-android-google-services.patch b/scripts/enable-android-google-services.patch index 88bfb5ce8..7c783015c 100644 --- a/scripts/enable-android-google-services.patch +++ b/scripts/enable-android-google-services.patch @@ -1,32 +1,24 @@ diff --git a/android/app/build.gradle b/android/app/build.gradle -index bf972f30..46cebdc6 100644 +index 7520ff2a..ae376d9d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle -@@ -70,6 +70,10 @@ - } - release { - signingConfig signingConfigs.release -+ minifyEnabled false -+ shrinkResources false -+ -+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - // https://stackoverflow.com/a/77494454/8222484 -@@ -78,8 +82,11 @@ flutter { - - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -- //implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 -+ implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 -+ testImplementation 'junit:junit:4.12' -+ androidTestImplementation 'androidx.test:runner:1.1.1' -+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' - implementation 'androidx.multidex:multidex:2.0.1' +@@ -2,7 +2,7 @@ plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +- //id "com.google.gms.google-services" ++ id "com.google.gms.google-services" } --//apply plugin: 'com.google.gms.google-services' -+apply plugin: 'com.google.gms.google-services' + def localProperties = new Properties() +@@ -83,6 +83,6 @@ flutter { + } + + dependencies { +- //implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 ++ implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 + implementation 'androidx.multidex:multidex:2.0.1' + } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index d0e0fbc9..0a546da0 100644 --- a/android/app/proguard-rules.pro @@ -93,42 +85,25 @@ index d9930f55..510e9845 100644 } -*/ \ No newline at end of file -diff --git a/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt b/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt -index 1afc4606..894d1571 100644 ---- a/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt -+++ b/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt -@@ -7,13 +7,11 @@ import android.content.Context - import androidx.multidex.MultiDex - - class MainActivity : FlutterActivity() { -- - override fun attachBaseContext(base: Context) { - super.attachBaseContext(base) - MultiDex.install(this) - } - -- - override fun provideFlutterEngine(context: Context): FlutterEngine? { - return provideEngine(this) - } -diff --git a/android/build.gradle b/android/build.gradle -index bd394967..2e9d54de 100644 ---- a/android/build.gradle -+++ b/android/build.gradle -@@ -8,7 +8,7 @@ buildscript { - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" -- //classpath 'com.google.gms:google-services:4.3.8' -+ classpath 'com.google.gms:google-services:4.3.8' - } +diff --git a/android/settings.gradle b/android/settings.gradle +index b2fd960a..fdb01a4d 100644 +--- a/android/settings.gradle ++++ b/android/settings.gradle +@@ -20,7 +20,7 @@ plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.1.2" apply false + id "org.jetbrains.kotlin.android" version "1.8.0" apply false +- // id "com.google.gms.google-services" version "4.3.8" apply false ++ id "com.google.gms.google-services" version "4.3.8" apply false } + include ":app" +\ No newline at end of file diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart -index 8e67ae92..da4da5c3 100644 +index 039dde89..1cefdd71 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart -@@ -39,7 +39,7 @@ import '../config/setting_keys.dart'; +@@ -38,7 +38,7 @@ import '../config/setting_keys.dart'; import '../widgets/matrix.dart'; import 'platform_infos.dart'; @@ -137,7 +112,7 @@ index 8e67ae92..da4da5c3 100644 class NoTokenException implements Exception { String get cause => 'Cannot get firebase token'; -@@ -64,7 +64,7 @@ class BackgroundPush { +@@ -63,7 +63,7 @@ class BackgroundPush { final pendingTests = >{}; @@ -147,10 +122,10 @@ index 8e67ae92..da4da5c3 100644 DateTime? lastReceivedPush; diff --git a/pubspec.yaml b/pubspec.yaml -index 193e6ed6..f70e48d4 100644 +index 69c80d6e..efd32d89 100644 --- a/pubspec.yaml +++ b/pubspec.yaml -@@ -26,7 +26,7 @@ dependencies: +@@ -25,7 +25,7 @@ dependencies: emoji_picker_flutter: ^2.1.1 emoji_proposal: ^0.0.1 emojis: ^0.9.9 From 0bd61ced3fbb0cfd970a2fb23eef7fbd6676872c Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 4 Aug 2024 15:00:23 +0200 Subject: [PATCH 103/106] feat: Convert opus to aac on iOS before playing --- ios/Podfile | 2 +- ios/Runner.xcodeproj/project.pbxproj | 6 ++-- lib/pages/chat/events/audio_player.dart | 28 +++++++++++++++++++ macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ pubspec.lock | 24 ++++++++++++++++ pubspec.yaml | 1 + 6 files changed, 59 insertions(+), 4 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index c8df069d3..1f9db6f6e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '12.1' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8d75b924a..9d57b73aa 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -475,7 +475,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -564,7 +564,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -613,7 +613,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index 40d4cf29f..a3de4e02b 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'package:matrix/matrix.dart'; +import 'package:nyx_converter/nyx_converter.dart'; import 'package:path_provider/path_provider.dart'; import 'package:fluffychat/utils/error_reporter.dart'; @@ -70,7 +71,34 @@ class AudioPlayerState extends State { widget.event.attachmentOrThumbnailMxcUrl()!.pathSegments.last, ); file = File('${tempDir.path}/${fileName}_${matrixFile.name}'); + await file.writeAsBytes(matrixFile.bytes); + + if (Platform.isIOS && + matrixFile.mimeType.toLowerCase() == 'audio/ogg') { + Logs().v('Convert ogg audio file for iOS...'); + final convertedFile = File('${file.path}.aac'); + if (await convertedFile.exists()) { + file = convertedFile; + } else { + final completer = Completer(); + NyxConverter.convertTo( + file.path, + tempDir.path, + fileName: '${fileName}_${matrixFile.name}', + container: NyxContainer.aac, + execution: ( + String? path, + NyxStatus status, { + String? errorMessage, + }) { + if (path != null) completer.complete(File(path)); + if (errorMessage != null) completer.completeError(errorMessage); + }, + ); + file = await completer.future; + } + } } setState(() { diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 50894732e..552a22ed9 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -11,6 +11,7 @@ import desktop_drop import device_info_plus import dynamic_color import emoji_picker_flutter +import ffmpeg_kit_flutter_full_gpl import file_selector_macos import flutter_app_badger import flutter_local_notifications @@ -42,6 +43,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) + FFmpegKitFlutterPlugin.register(with: registry.registrar(forPlugin: "FFmpegKitFlutterPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterAppBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterAppBadgerPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) diff --git a/pubspec.lock b/pubspec.lock index c46a3944f..98e3900cf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -385,6 +385,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + ffmpeg_kit_flutter_full_gpl: + dependency: transitive + description: + name: ffmpeg_kit_flutter_full_gpl + sha256: "4f269bcb636bfcb544e5b4d65c706a3d311839970cb42638e72406410c1b5b7b" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + ffmpeg_kit_flutter_platform_interface: + dependency: transitive + description: + name: ffmpeg_kit_flutter_platform_interface + sha256: addf046ae44e190ad0101b2fde2ad909a3cd08a2a109f6106d2f7048b7abedee + url: "https://pub.dev" + source: hosted + version: "0.2.1" file: dependency: transitive description: @@ -1270,6 +1286,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + nyx_converter: + dependency: "direct main" + description: + name: nyx_converter + sha256: "29684f29a650119f0417f7faa736c5b8ac65e5b32dbae40412bd6c3d7a692fc7" + url: "https://pub.dev" + source: hosted + version: "0.1.1" olm: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 69c80d6e1..ac3341975 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -66,6 +66,7 @@ dependencies: linkify: ^5.0.0 matrix: ^0.31.0 native_imaging: ^0.1.1 + nyx_converter: ^0.1.1 package_info_plus: ^6.0.0 pasteboard: ^0.2.0 path: ^1.9.0 From a7473af40f8d118741204ad86d2a786400da6a1d Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 4 Aug 2024 19:22:08 +0200 Subject: [PATCH 104/106] feat: Record voice message with opus/ogg if supported --- lib/pages/chat/events/audio_player.dart | 26 +++------------ lib/pages/chat/recording_dialog.dart | 9 ++++-- licenses.yaml | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 -- pubspec.lock | 32 +++++-------------- pubspec.yaml | 2 +- 6 files changed, 21 insertions(+), 51 deletions(-) diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index a3de4e02b..430bac2d7 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; import 'package:matrix/matrix.dart'; -import 'package:nyx_converter/nyx_converter.dart'; +import 'package:opus_caf_converter_dart/opus_caf_converter_dart.dart'; import 'package:path_provider/path_provider.dart'; import 'package:fluffychat/utils/error_reporter.dart'; @@ -77,27 +77,11 @@ class AudioPlayerState extends State { if (Platform.isIOS && matrixFile.mimeType.toLowerCase() == 'audio/ogg') { Logs().v('Convert ogg audio file for iOS...'); - final convertedFile = File('${file.path}.aac'); - if (await convertedFile.exists()) { - file = convertedFile; - } else { - final completer = Completer(); - NyxConverter.convertTo( - file.path, - tempDir.path, - fileName: '${fileName}_${matrixFile.name}', - container: NyxContainer.aac, - execution: ( - String? path, - NyxStatus status, { - String? errorMessage, - }) { - if (path != null) completer.complete(File(path)); - if (errorMessage != null) completer.completeError(errorMessage); - }, - ); - file = await completer.future; + final convertedFile = File('${file.path}.caf'); + if (await convertedFile.exists() == false) { + OpusCaf().convertOpusToCaf(file.path, convertedFile.path); } + file = convertedFile; } } diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index bc92f3ff5..be22ff308 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -13,7 +13,6 @@ import 'package:fluffychat/utils/platform_infos.dart'; import 'events/audio_player.dart'; class RecordingDialog extends StatefulWidget { - static const String recordingFileType = 'm4a'; const RecordingDialog({ super.key, }); @@ -36,9 +35,11 @@ class RecordingDialogState extends State { Future startRecording() async { try { + final useOpus = + await _audioRecorder.isEncoderSupported(AudioEncoder.opus); final tempDir = await getTemporaryDirectory(); final path = _recordedPath = - '${tempDir.path}/recording${DateTime.now().microsecondsSinceEpoch}.${RecordingDialog.recordingFileType}'; + '${tempDir.path}/recording${DateTime.now().microsecondsSinceEpoch}.${useOpus ? 'ogg' : 'm4a'}'; final result = await _audioRecorder.hasPermission(); if (result != true) { @@ -46,14 +47,16 @@ class RecordingDialogState extends State { return; } await WakelockPlus.enable(); + await _audioRecorder.start( - const RecordConfig( + RecordConfig( bitRate: bitRate, sampleRate: samplingRate, numChannels: 1, autoGain: true, echoCancel: true, noiseSuppress: true, + encoder: useOpus ? AudioEncoder.opus : AudioEncoder.aacLc, ), path: path, ); diff --git a/licenses.yaml b/licenses.yaml index 7b2f79bbf..ebab43440 100644 --- a/licenses.yaml +++ b/licenses.yaml @@ -12,6 +12,7 @@ permittedLicenses: - BSD-2-Clause - BSD-3-Clause - EUPL-1.2 + - LGPL-3.0 - MIT - MPL-2.0 - Zlib diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 552a22ed9..50894732e 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -11,7 +11,6 @@ import desktop_drop import device_info_plus import dynamic_color import emoji_picker_flutter -import ffmpeg_kit_flutter_full_gpl import file_selector_macos import flutter_app_badger import flutter_local_notifications @@ -43,7 +42,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) - FFmpegKitFlutterPlugin.register(with: registry.registrar(forPlugin: "FFmpegKitFlutterPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterAppBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterAppBadgerPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 98e3900cf..0979b4a90 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -385,22 +385,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" - ffmpeg_kit_flutter_full_gpl: - dependency: transitive - description: - name: ffmpeg_kit_flutter_full_gpl - sha256: "4f269bcb636bfcb544e5b4d65c706a3d311839970cb42638e72406410c1b5b7b" - url: "https://pub.dev" - source: hosted - version: "6.0.3" - ffmpeg_kit_flutter_platform_interface: - dependency: transitive - description: - name: ffmpeg_kit_flutter_platform_interface - sha256: addf046ae44e190ad0101b2fde2ad909a3cd08a2a109f6106d2f7048b7abedee - url: "https://pub.dev" - source: hosted - version: "0.2.1" file: dependency: transitive description: @@ -1286,14 +1270,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" - nyx_converter: - dependency: "direct main" - description: - name: nyx_converter - sha256: "29684f29a650119f0417f7faa736c5b8ac65e5b32dbae40412bd6c3d7a692fc7" - url: "https://pub.dev" - source: hosted - version: "0.1.1" olm: dependency: transitive description: @@ -1302,6 +1278,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + opus_caf_converter_dart: + dependency: "direct main" + description: + name: opus_caf_converter_dart + sha256: e08156066916f790a54df305e103d6dec4d853ec23147e6a02eda3c06f67ba1a + url: "https://pub.dev" + source: hosted + version: "1.0.1" package_config: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index ac3341975..9d00c0d9d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -66,7 +66,7 @@ dependencies: linkify: ^5.0.0 matrix: ^0.31.0 native_imaging: ^0.1.1 - nyx_converter: ^0.1.1 + opus_caf_converter_dart: ^1.0.1 package_info_plus: ^6.0.0 pasteboard: ^0.2.0 path: ^1.9.0 From 3286b1938732b76d0825ae3e7841474ad37e14c7 Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 5 Aug 2024 13:21:12 +0200 Subject: [PATCH 105/106] refactor: Recording dialog --- lib/pages/chat/chat.dart | 6 ++--- lib/pages/chat/recording_dialog.dart | 38 +++++++++++++--------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 129bcb4ef..6f4a83e9d 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -621,10 +621,10 @@ class ChatController extends State builder: (c) => const RecordingDialog(), ); if (result == null) return; - final audioFile = File(result.path); + final audioFile = XFile(result.path); final file = MatrixAudioFile( - bytes: audioFile.readAsBytesSync(), - name: audioFile.path, + bytes: await audioFile.readAsBytes(), + name: result.fileName ?? audioFile.path, ); await room.sendFileEvent( file, diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index be22ff308..37d3703d3 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -1,9 +1,11 @@ import 'dart:async'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:path/path.dart' as path_lib; import 'package:path_provider/path_provider.dart'; import 'package:record/record.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; @@ -26,10 +28,12 @@ class RecordingDialogState extends State { Duration _duration = Duration.zero; bool error = false; - String? _recordedPath; + final _audioRecorder = AudioRecorder(); final List amplitudeTimeline = []; + String? fileName; + static const int bitRate = 64000; static const int samplingRate = 44100; @@ -37,9 +41,13 @@ class RecordingDialogState extends State { try { final useOpus = await _audioRecorder.isEncoderSupported(AudioEncoder.opus); - final tempDir = await getTemporaryDirectory(); - final path = _recordedPath = - '${tempDir.path}/recording${DateTime.now().microsecondsSinceEpoch}.${useOpus ? 'ogg' : 'm4a'}'; + fileName = + 'recording${DateTime.now().microsecondsSinceEpoch}.${useOpus ? 'ogg' : 'm4a'}'; + String? path; + if (!kIsWeb) { + final tempDir = await getTemporaryDirectory(); + path = path_lib.join(tempDir.path, fileName); + } final result = await _audioRecorder.hasPermission(); if (result != true) { @@ -58,7 +66,7 @@ class RecordingDialogState extends State { noiseSuppress: true, encoder: useOpus ? AudioEncoder.opus : AudioEncoder.aacLc, ), - path: path, + path: path ?? '', ); setState(() => _duration = Duration.zero); _recorderSubscription?.cancel(); @@ -94,8 +102,8 @@ class RecordingDialogState extends State { void _stopAndSend() async { _recorderSubscription?.cancel(); - await _audioRecorder.stop(); - final path = _recordedPath; + final path = await _audioRecorder.stop(); + if (path == null) throw ('Recording failed!'); const waveCount = AudioPlayerWidget.wavesCount; final step = amplitudeTimeline.length < waveCount @@ -110,6 +118,7 @@ class RecordingDialogState extends State { path: path, duration: _duration.inMilliseconds, waveform: waveform, + fileName: fileName, ), ); } @@ -220,23 +229,12 @@ class RecordingResult { final String path; final int duration; final List waveform; + final String? fileName; const RecordingResult({ required this.path, required this.duration, required this.waveform, + required this.fileName, }); - - factory RecordingResult.fromJson(Map json) => - RecordingResult( - path: json['path'], - duration: json['duration'], - waveform: List.from(json['waveform']), - ); - - Map toJson() => { - 'path': path, - 'duration': duration, - 'waveform': waveform, - }; } From 47481eb6769134b405c649e238d5db7472d7cf09 Mon Sep 17 00:00:00 2001 From: Krille Date: Tue, 6 Aug 2024 11:55:01 +0200 Subject: [PATCH 106/106] feat: Send voice messages from web --- lib/pages/chat/recording_dialog.dart | 34 ++++++++++++++++++++++++---- lib/utils/platform_infos.dart | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index 37d3703d3..6d8718854 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -39,10 +39,16 @@ class RecordingDialogState extends State { Future startRecording() async { try { - final useOpus = - await _audioRecorder.isEncoderSupported(AudioEncoder.opus); + final codec = kIsWeb + // Web seems to create webm instead of ogg when using opus encoder + // which does not play on iOS right now. So we use wav for now: + ? AudioEncoder.wav + // Everywhere else we use opus if supported by the platform: + : await _audioRecorder.isEncoderSupported(AudioEncoder.opus) + ? AudioEncoder.opus + : AudioEncoder.aacLc; fileName = - 'recording${DateTime.now().microsecondsSinceEpoch}.${useOpus ? 'ogg' : 'm4a'}'; + 'recording${DateTime.now().microsecondsSinceEpoch}.${codec.fileExtension}'; String? path; if (!kIsWeb) { final tempDir = await getTemporaryDirectory(); @@ -64,7 +70,7 @@ class RecordingDialogState extends State { autoGain: true, echoCancel: true, noiseSuppress: true, - encoder: useOpus ? AudioEncoder.opus : AudioEncoder.aacLc, + encoder: codec, ), path: path ?? '', ); @@ -238,3 +244,23 @@ class RecordingResult { required this.fileName, }); } + +extension on AudioEncoder { + String get fileExtension { + switch (this) { + case AudioEncoder.aacLc: + case AudioEncoder.aacEld: + case AudioEncoder.aacHe: + return 'm4a'; + case AudioEncoder.opus: + return 'ogg'; + case AudioEncoder.wav: + return 'wav'; + case AudioEncoder.amrNb: + case AudioEncoder.amrWb: + case AudioEncoder.flac: + case AudioEncoder.pcm16bits: + throw UnsupportedError('Not yet used'); + } + } +} diff --git a/lib/utils/platform_infos.dart b/lib/utils/platform_infos.dart index b96104df4..638c5bcc2 100644 --- a/lib/utils/platform_infos.dart +++ b/lib/utils/platform_infos.dart @@ -29,7 +29,7 @@ abstract class PlatformInfos { static bool get usesTouchscreen => !isMobile; - static bool get platformCanRecord => (isMobile || isMacOS); + static bool get platformCanRecord => (isMobile || isMacOS || isWeb); static String get clientName => '${AppConfig.applicationName} ${isWeb ? 'web' : Platform.operatingSystem}${kReleaseMode ? '' : 'Debug'}';